Можно ли скомпилировать два проекта в один с помощью MSBuild? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два проекта (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 в один набор, а стандартные сценарии MSBuild для проектов C # позаботятся обо всем остальном. Проблема в том, что определения элементов компиляции в конечном итоге относятся к 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...