Вы можете установить общий OutputPath для сборки всех проектов в Sln в одном временном каталоге и копирования необходимых файлов в последнюю папку сборки. В действии копирования вы можете установить фильтр для копирования всех dll без "test" в его названии.
msbuild.exe 1.sln /p:Configuration=Release;Platform=AnyCPU;OutputPath=..\latest-temp
Существует более сложное и более гибкое решение. Вы можете настроить перехват для процесса сборки, используя CustomAfterMicrosoftCommonTargets . Посмотрите этот пост например.
Пример файла цели может быть таким:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
PublishToLatest
</BuildDependsOn>
</PropertyGroup>
<Target Name="PreparePublishingToLatest">
<PropertyGroup>
<TargetAssembly>$(TargetPath)</TargetAssembly>
<TargetAssemblyPdb>$(TargetDir)$(TargetName).pdb</TargetAssemblyPdb>
<TargetAssemblyXml>$(TargetDir)$(TargetName).xml</TargetAssemblyXml>
<TargetAssemblyConfig>$(TargetDir)$(TargetName).config</TargetAssemblyConfig>
<TargetAssemblyManifest>$(TargetDir)$(TargetName).manifest</TargetAssemblyManifest>
<IsTestAssembly>$(TargetName.ToUpper().Contains("TEST"))</IsTestAssembly>
</PropertyGroup>
<ItemGroup>
<PublishToLatestFiles Include="$(TargetAssembly)" Condition="Exists('$(TargetAssembly)')" />
<PublishToLatestFiles Include="$(TargetAssemblyPdb)" Condition="Exists('$(TargetAssemblyPdb)')" />
<PublishToLatestFiles Include="$(TargetAssemblyXml)" Condition="Exists('$(TargetAssemblyXml)')" />
<PublishToLatestFiles Include="$(TargetAssemblyConfig)" Condition="Exists('$(TargetAssemblyConfig)')" />
<PublishToLatestFiles Include="$(TargetAssemblyManifest)" Condition="Exists('$(TargetAssemblyManifest)')" />
</ItemGroup>
</Target>
<Target Name="PublishToLatest"
Condition="Exists('$(LatestDir)') AND '$(IsTestAssembly)' == 'False' AND '@(PublishToLatestFiles)' != ''"
DependsOnTargets="PreparePublishingToLatest">
<Copy SourceFiles="@(PublishToLatestFiles)" DestinationFolder="$(LatestDir)" SkipUnchangedFiles="true" />
</Target>
</Project>
В этом файле целей вы можете указать любые действия, которые вы хотите.
Вы можете разместить его здесь "C: \ Program Files \ MSBuild \ v4.0 \ Custom.After.Microsoft.Common.targets" или здесь "C: \ Program Files \ MSBuild \ 4.0 \ Microsoft.Common.targets \". ImportAfter \ PublishToLatest.targets».
И третий вариант - добавить в каждый проект, который вы хотите опубликовать, импорт пользовательских целей. См. Как: использовать одну и ту же цель в нескольких файлах проекта