我有两个项目(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
有没有直接的方法来实现这个目标?