【问题标题】:MSBuild multiple outputpathMSBuild 多输出路径
【发布时间】:2023-03-13 22:06:02
【问题描述】:

我看到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>

【问题讨论】:

    标签: msbuild targets msbuild-propertygroup


    【解决方案1】:

    您使用将 $(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>
    

    【讨论】:

    • 谢谢尼克!我会试一试并报告。
    • 我试过了,但没用 - schemas.microsoft.com/developer/msbuild/2003"> $(TeamBuildOutDir) \Assemblies
    • 请注意您的 SourceFiles 位置是“*”。什么时候应该是“***。”。
    • 不走运,尼克...我更新了 qts,因为代码没有在 cmets 中格式化...有什么建议吗?
    • 更新...我在“DependsOnTarget”末尾添加了缺失的“s”,错误消失了。但是,测试消息没有显示,也没有将输出复制到第二个文件夹。我确实尝试在 标记之前/之后移动 标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2010-09-24
    相关资源
    最近更新 更多