2014-04-22 13 views
1

我目前正在设置TFS 2013构建服务器。想要将编译输出复制到源代码管理下的另一个目录

我有几个不同的应用程序,一些共同的代码共享。当其中一个共享库发生签入时,我希望TFS自动生成,并将其放置在源代码管理下的另一个目录中。

构建服务器当前构建DLL,但我无法让它们移动到源受控文件夹中。

EX:

源控制

  • 冲刺X

    - App 1 
        - App 2 
        - Common Libraries 
         * Utilities 
        - DLLs 
    

当有人在公用设施的变化检查,它应该编译DLL并将其移动到“DLL”。当一个人得到最新的时候,他们在DLL文件夹中。

任何帮助,将通常理解

回答

0

它最好用的NuGet为这种情况。但是,要回答您的问题,需要执行以下操作:

在每个客户端构建的工作区中添加共享DLL的文件夹路径,并设置为持续集成触发的客户端构建。这样,当任何人签入共享DLL文件夹中的文件时,将为每个客户端触发构建。

第二个问题是每次构建DLL时都会在分隔的DLL文件夹中签入更新的DLL。您将需要修改您的构建工作流程,以便

1)检出的DLL文件 2)DLL复制从输出路径到共享DLL文件夹 3)签入DLL文件

可以使用TFS构建扩展(http://tfsbuildextensions.codeplex.com)库来实现以上所有功能。步骤(1)和(3)可以使用TFSSource活动执行,步骤(2)可以使用File活动完成。

希望它有帮助

+0

谢谢,我正在调查此问题。现在编译服务器说它找不到TF.exe,即使它在服务器上,我甚至在Toolpath中指定它。我也可以研究Nuget的可能性。如果你有任何好的建议,这将不胜感激。 – user3561351

+0

如果您传递的是ToolsPath,它需要是TF.exe的完整目录路径。如果未指定ToolsPath,则该活动默认使用环境变量VS120COMNTOOLS,并尝试在%VS120COMNTOOLS%\ .. \ IDE \ TF.exe中查找TF.exe。 –

+0

设置一个NuGet服务器非常简单,最简单的就是简单的文件夹共享。一旦在Visual Studio中设置了位置,该文​​件夹中的所有包都将出现在NuGet包管理器中。 在这种情况下,客户端应用程序的NuGet将确保编译客户端时使用最新版本。你所需要做的就是在NuGet包中创建你的程序集。再次,TfSBuildExtension中有一项活动允许创建NuGet包。 –

相关问题