Msbuild для копирования сборок в несколько папок приложений?

У меня есть решение VS, которое содержит несколько приложений и общедоступных API для публикации вместе с общими библиотеками. У меня есть небольшой опыт создания файла msbuild, подобного этому.

    <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"  DefaultTargets="Build">
<PropertyGroup>
  <Configuration>Release</Configuration>
  <Platform>Any CPU</Platform>
  <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>


  <TPath>C:\Program Files (x86)\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</TPath>
  <ETPath>C:\Program Files (x86)\MSBuild\ExtensionPack\4.0\</ETPath>

</PropertyGroup>

<ItemDefinitionGroup />
<ItemGroup>

  <SolutionFile Include="MyApplications.sln" />

</ItemGroup>


<Target Name="Build" Outputs="@(CollectedBuildOutput)">
  <MSBuild Projects="@(SolutionFile)" Targets="Rebuild" BuildInParallel="True"
         Properties="BuildingSolutionFile=true; Configuration=$(Configuration); Platform=$(Platform); TargetFrameworkVersion=$(TargetFrameworkVersion); WarningLevel=3"
         SkipNonexistentProjects="%(ProjectReference.SkipNonexistentProjects)">
  <Output TaskParameter="TargetOutputs" ItemName="CollectedBuildOutput"/>

</MSBuild>

</Target>


</Project>

Тогда я бегу

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MyProjects.msbuild /p:outdir=C:\VSProjectsRelease\MyApplications\Release\

Так что все сборки будут идти в один каталог. Все идет нормально. Однако если я захочу заархивировать файлы для каждого приложения или собрать файлы для проектов установки Wix, возникнут проблемы.

Например, в MyApplications.sln у меня есть 10 проектов, 3 из которых являются приложениями, например, AppA, AppB и AppC.

Я хотел бы запустить один файл msbuild, который создаст 3 папки приложений и скопировал туда сборки без явного определения зависимостей, так как файлы Sln и csproj уже знают об этом. И я бы хотел, чтобы msbuild собирал каждый проект только один раз. Как это сделать?

0 ответов

Другие вопросы по тегам