3

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

我能找到的最接近的解决方案是Using Wildcards to Specify Items

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

  <ItemGroup>
    <Compile Include="Controllers\HomeController.cs" />
    <Compile Include="Controllers\ParticipantController.cs" />
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="Models\ParticipantModel.cs" />
    <Compile Include="Models\UserModel.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Utility.cs" />
  </ItemGroup>

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

相关的 Visual Studio“问题”:
我意识到我的理想解决方案不太可能被 Visual Studio 遵循——它一次构建一个文件的构建文件——所以我最终会手动编辑构建文件。有没有办法让 Visual Studio 与我的理想解决方案完美配合?

4

1 回答 1

3

尝试包含一个包含每个文件的外部 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 中包含文件都没有关系……最后,所有内容都将包含在内。

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

于 2011-08-02T23:00:41.840 回答