gpt4 book ai didi

.net - 使用 MSBuild 构建多个 .csproj 文件时创建 "in-memory .sln"

转载 作者:行者123 更新时间:2023-12-04 04:00:48 25 4
gpt4 key购买 nike

我们有一个使用多个 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com