是否可以使用MSBuild将两个项目编译成一个项目?

时间:2018-04-26 20:53:22

标签: c# .net msbuild

我有两个项目(csproj),我想组合并编译成一个程序集,但我想继续将它们作为单独的项目。我认为这对于MSBuild来说非常简单,但它不像我预期的那样工作。

一个最小的例子展示了我希望做的事情如下:

[Full.proj]

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Import Project="Proj1/Proj1.proj"/>
  <Import Project="Proj2/Proj2.proj"/>

  <Target Name="Build">
    <Message Text="%(Compile.FullPath)"/>
  </Target>
</Project>

Proj1.proj和Proj2.proj如下所示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Include="Test#.cs"/>
  </ItemGroup>
</Project>

因此,Full.proj只是导入其他两个项目,我希望将所有的Compile项目都包含在一个集合中,而C#项目的标准MSBuild脚本将负责其余的工作。问题是,编译项目定义最终是相对于Full.proj而不是相对于定义它们的项目(这让我感到惊讶)。

执行MSBuild.exe Full.proj将导致:

C:\users\mpflug\Desktop\msbuildtest\Test1.cs
C:\users\mpflug\Desktop\msbuildtest\Test2.cs

我的期待:

C:\users\mpflug\Desktop\msbuildtest\Proj1\Test1.cs
C:\users\mpflug\Desktop\msbuildtest\Proj2\Test2.cs

有没有直接的方法来实现这个目标?

示例项目: https://github.com/MarkPflug/MSBuildCombine

0 个答案:

没有答案