【问题标题】:Customise Build Build Output for Specific Projects为特定项目自定义构建构建输出
【发布时间】:2014-03-11 01:36:50
【问题描述】:

我有一个解决方案,其中包含许多 2 个 Windows 控制台项目、1 个网站项目和 20 个类库。

我希望 TFS 2013 仅将 Windows 控制台和网站项目推送到放置文件夹。

我正在寻找类似于下面的文件夹结构。

DropFolder
    - App1
    - App2
    - Website1

如何配置 TFS 以实现这一点的最佳方式是什么?

谢谢

更新

我最终将 nuget 包 http://www.nuget.org/packages/PublishedApplications 用于我想要发布的所有项目。这会将项目复制到 _PublishedApplications 文件夹中。这样我就有了这样的文件夹结构

DropFolder
    _PublishedApplications
        - App1
        - App2
    _PublishedWebsites
        - Website1

【问题讨论】:

    标签: tfs tfsbuild tfs-2013


    【解决方案1】:
    • 默认模板在“处理”选项卡“高级”部分下具有Solution Specific Build Outputs 属性。

    • 或者,您可以让MSBuild 控制您的构建流程。

    更新:

    【讨论】:

    • 我正在寻找的解决方案来自另一个answer。使用 nugget 包创建将 Web 项目放入 _PublishedApplications 的目标。
    • 那就更好了。我已经更新了答案以供将来参考。
    【解决方案2】:

    我也使用过PublishedApplications NuGet 包,但遇到了问题。如果引用的库将Content 标记为Copy Always,则所有内容将被复制到根文件夹而不是分层。例如,如果您有以下项目和结构(为简洁起见,省略了一些文件):

    PublishLib
        test
            TextFile1.txt (marked as Content/CopyAlways)
    
    TestPublishTargetApp - references PublishLib
        targets
            Microsoft.Application.targets
    

    团队构建完成后,这是_PublishedApplications\TestPublishTargetApp 文件夹的内容:

    PublishLib.dll
    TestPublishTargetApp.exe
    TestPublishTargetApp.exe.config
    TestPublishTargetApp.pdb
    TextFile1.txt
    

    而我的预期是:

    test\TextFile1.txt
    PublishLib.dll
    TestPublishTargetApp.exe
    TestPublishTargetApp.exe.config
    TestPublishTargetApp.pdb
    

    Microsoft.Application.targets 摆弄了一下之后,我能够通过更改最后一个<Copy SourceFiles 得到我想要的东西(原来的注释掉了):

        <!--<Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)"
          DestinationFolder="$(ExeProjectOutputDir)"
          SkipUnchangedFiles="false"
          Retries="$(CopyRetryCount)"
          RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"/>-->
    
        <Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)"
          DestinationFiles = "@(_SourceItemsToCopyToOutputDirectoryAlways->'$(ExeProjectOutputDir)\%(TargetPath)')"
          SkipUnchangedFiles="false"
          Retries="$(CopyRetryCount)"
          RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"/>
    

    我不确定这对其他人是否有用,但对我来说这是必不可少的更改,而且 PublishedApplications NuGet 包自 2014 年以来没有更改(似乎是废弃的项目)。

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 2016-08-04
      • 2011-10-19
      相关资源
      最近更新 更多