MS Build是否可以包含所有库项目代码文件而不需要单独指定它们,并且可以很好地与Visual Studio配合使用?



是否有一种方法可以指示MS Build通过类库项目的常规.csproj文件包括所有代码文件(即项目树中的所有.cs文件,包括子文件夹)而不单独列出它们?

我能找到的最接近的解决方案是使用通配符来指定项目。

这是Visual studio如何在我的类库项目中逐个文件构建指令的示例:

  <ItemGroup>
    <Compile Include="ControllersHomeController.cs" />
    <Compile Include="ControllersParticipantController.cs" />
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="ModelsParticipantModel.cs" />
    <Compile Include="ModelsUserModel.cs" />
    <Compile Include="PropertiesAssemblyInfo.cs" />
    <Compile Include="Utility.cs" />
  </ItemGroup>

另一种类型的项目,网站项目,使用一种机制来检测文件修改并重新编译这些文件。编译所有相关内容的概念是我在类库项目中所追求的,但不需要检测更改。

相关的Visual Studio "issue":
我意识到我的理想解决方案不太可能被Visual Studio所遵循——它每次构建一个文件——所以我最终会手动编辑构建文件。是否有一种方法可以使Visual Studio很好地发挥我的理想解决方案?

尝试包含一个外部MSBuild文件,包括每个文件:

文件: IncludeEverything.proj

  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="BeforeBuild">
      <ItemGroup>
        <Compile Remove="@(Compile)" />
        <Compile Include="*.cs;.***.cs" />
      </ItemGroup>
    </Target>
  </Project>

更改您的csproj,以导入另一个:

  ...
  <Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
  <Import Project="IncludeEverything.proj" />
  ...

通过使用这个解决方案,VS是否包含csproj中的文件并不重要…最后,所有内容都会包含在内。

这使得该解决方案易于在其他项目中重用

相关内容

最新更新