有没有办法通过类库项目的常规.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&#34;问题&#34;:
我意识到我的理想解决方案可能不会被Visual Studio所遵循 - 它一次构建一个文件的构建文件 - 所以我最终会手动编辑构建文件。
有没有办法让Visual Studio与我理想的解决方案很好地配合?
答案 0 :(得分: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中的文件并不重要......最后,所有内容都将被包含在内。
这使得该解决方案易于在其他项目中重用。