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

标签 .net visual-studio msbuild continuous-integration

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

相关文章:

msbuild - Visual Studio 构建不使用 WiX 项目的事件解决方案配置

c++ - VS2017 : How can I write per-file options in . vcxproj,没有破坏我设置的过滤器?

msbuild - 使用 msbuild 生成 x64 c# 项目生成 32 位目标

.net - 在PowerShell中将日期时间格式化为\/Date(1411704000000)\/以JSON格式

.net - 如何使用DDD模式在.NET企业应用程序中正确定义异常策略?

visual-studio - 有没有人知道允许从 VS 中嵌套文件(依赖)的插件或宏?

c# - 在 MVC ASPX View 中设置断点

vb.net - try block 中的 DataReader 导致潜在的空引用错误

c# - 如何根据用户输入动态构建和返回 linq 谓词

C#:如何在 ASP.Net 条形图中对条形进行交叉影线