MSBuild 多个输出路径

标签 msbuild targets msbuild-propertygroup

我看到了this S.O 问题并有类似的要求。这是我在 .targets 文件中的内容 -

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
        <OutputPath>$(TeamBuildOutDir)\Assemblies</OutputPath>                 
    </PropertyGroup>

如何输出到多个文件夹? 例如- $(TeamBuildOutDir)\Assemblies2

TIA

谢谢尼克,复制/粘贴把它弄乱了。这就是我尝试过的 -

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
 <OutputPath>$(TeamBuildOutDir)\Assemblies</OutputPath>                   
</PropertyGroup>
<Target Name="AfterBuild">
 <Copy SourceFiles="$(OutputPath)\**\*.*" DestinationFolder="$(TeamBuildOutDir)\Assemblies2" />
</Target>
</Project>

我也尝试过 -

 <Copy SourceFiles="$(OutputPath)\***\*.*" DestinationFolder="$(TeamBuildOutDir)\Assemblies2" />

和-

 <Copy SourceFiles="$(OutputPath)\***\*.*" DestinationFolder="$(TeamBuildOutDir)\" />

如果目录不存在导致问题但仍然没有运气。

7 月 28 日更新。尝试了这个,但仍然不起作用(没有错误,但文件不存在于输出目录中。它们存在于 Assemblies 文件夹中,所以我知道目标文件正在被触发。)-

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
 <OutputPath>$(TeamBuildOutDir)\Assemblies</OutputPath>                   
</PropertyGroup>
<Target Name="AfterBuild">
 <CreateItem Include="$(OutputPath)\**\*.*">
     <Output ItemName="Outfiles" TaskParameter="Include" />
 </CreateItem>
 <Copy SourceFiles="@(Outfiles)" DestinationFiles="@(Outfiles->'$(TeamBuildOutDir)\%(relativedir)%(Filename)%(Extension)')" SkipUnchangedFiles="false" />
</Target>
</Project>

最佳答案

您可以通过将 $(OutputPath) 的内容复制到 $(TeamBuildOutDir)\Assemblies2 的任务来创建 AfterBuild 目标。

<Target Name="AfterBuild">
 <Copy SourceFiles="$(OutputPath)\**\*.*" DestinationFolder="$(TeamBuildOutDir)\Assemblies2" />
</Target>

编辑,更新它以包含测试消息,并包含“DependsOnTarget”属性以查看我们是否可以在构建过程后发生这种情况...

<Target Name="AfterBuild" DependsOnTarget="Build">
 <Message Text="**** TEST **** " Importance="high" />
 <Copy SourceFiles="$(OutputPath)\**\*.*" DestinationFolder="$(TeamBuildOutDir)\Assemblies2" />
</Target>

关于MSBuild 多个输出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412256/

相关文章:

ios - xcode-具有多个测试目标,方案测试做什么

msbuild - 将属性组值从一个 MsBuild 任务传递到另一个

msbuild - dotnet publish、contentFiles 和可传递的 nuget 依赖项

visual-studio-2013 - 在 TFS 构建期间未找到程序集

templates - 如何在项目模板中添加构建阶段?

ios - swift : Multiple targets handling: macros not working

msbuild - 在MSBuild中找出当前操作系统的 "Bit"

c# - 如何通过命令行在 MSBuild 中指定 CodeAnalysisRuleset

c# - 如何使用 licenses.licx 文件

msbuild - Visual Studio 2013 : Database Project MSBuild error