当我创建构建定义我已经安装了一些源设置,下面的例子:防止TFS构建定义源设置从触发构建
问题是,我希望它触发一个构建时有人检查进入构建或安装文件夹,但包括文件夹只是它需要的一些库和其他项目。当这些库改变时,我不希望它重新运行。不过,我需要在这里设置它们以确保它们被复制到Build drop服务器。有没有办法通过这个复制包括文件夹,而不需要有人检入此文件夹时强制生成触发器?
当我创建构建定义我已经安装了一些源设置,下面的例子:防止TFS构建定义源设置从触发构建
问题是,我希望它触发一个构建时有人检查进入构建或安装文件夹,但包括文件夹只是它需要的一些库和其他项目。当这些库改变时,我不希望它重新运行。不过,我需要在这里设置它们以确保它们被复制到Build drop服务器。有没有办法通过这个复制包括文件夹,而不需要有人检入此文件夹时强制生成触发器?
有两件事情要做接近这一点。
首先,你需要得到你的源文件夹到一个构建中心布局,这将有助于消除尽可能多的重叠越好。
如果您需要不应触发构建的特定共享文件夹,则不要将其包含在源映射中,而应添加脚本以将文件作为构建的早期部分下载到工作区。
的例子将需要更新您的Visual Studio版本,你应该通过源代码目录的脚本。
REM %1 represents the Sources directory
REM Compute variables
SET TfExe="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
REM SET TfExe="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
Set RefPath="$/TFS BUILDS/Shapes/Main/Includes"
Set localPath="%~1\Includes"
REM set the Drive Letter for this build
Set Localdrive=%localPath:~1,2%
%Localdrive%
cd %1
REM Map the folders
%TfExe% workfold /map %RefPath% %localPath%
REM Get the required content
%TfExe% get %RefPath%
REM Unmap the folders
%TfExe% workfold /unmap %RefPath%
有没有简单的方法来做到这一点。正如您发现的那样,源代码设置具有双重功能,它们定义了构建所需的一组文件,这些文件是下载文件的一组触发配置项的文件。
我认为这不是问题,如果包含在您的构建中使用,那么当我们想要在构建时发布新构建,以确保更改不会破坏构建中的任何内容处理。
一个公平的点,在大多数情况下,我希望这也是如此。问题是在我的特殊情况下,包括用于另一个项目和这个项目,但这个项目使用第三方DLL几乎不会改变。但是所有的dll都需要保存在这个Include文件夹中。 – User101 2015-02-23 16:31:14
然后,您可以在源设置中使用更具体的路径。不要映射整个包含文件夹,而只需映射构建使用/需要的文件夹。 – 2015-02-23 16:37:30
使用特殊关键字***_NO_CI***
在你签入包括目录。
如果/ Includes /文件夹只是第三方引用,为什么不将它们放到NuGet包中并从需要它们的项目中引用它们? – 2015-02-23 22:54:28