我们有一个使用多个 .sln 文件的代码项目,每个文件包含项目(一些项目由不同的解决方案共享,即存在于多个解决方案中)。
我们的问题是,当使用项目引用时,实际项目也必须驻留在同一个解决方案中。
所有这些项目都是在构建服务器上使用 MSBuild 构建的。
我想知道是否有可能创建一个 MSBuild 脚本,以某种方式将所有项目“导入”到单个 MSBuild 项目中,这样它就好像所有项目实际上位于同一个 Visual Studio .sln 下一样文件?
例如,我想要类似于以下脚本的内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Builds all *.sln files under this repository. -->
<ItemGroup>
<SolutionFiles Include="**/*.sln" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionFiles)" Targets="Rebuild" />
</Target>
</Project>
这是否意味着 MSBuild 将在内存中构建所有项目的“主项目”,从而克服项目引用问题?
最佳答案
为什么不直接使用上面的语法直接构建 csprojs?
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Builds all *.*proj files under this repository. -->
<ItemGroup>
<!--SolutionFiles Include="**/*.sln" /-->
<ProjectFiles Include="**/*.*proj"/>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectFiles)" Targets="Rebuild" />
</Target>
</Project>
MSBuild 将默认构建项目引用,即使您在命令行模式下没有 sln 文件也是如此。如果你想省略项目引用(即你正在按顺序构建东西)你可以使用/p:BuildProjectReferences=false...
关于.net - 使用 MSBuild 构建多个 .csproj 文件时创建 "in-memory .sln",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089155/