2013-01-25 32 views
0

我想实现连续构建过程,如果我看XAML序列Drop文件夹中我想指定自定义模板TFS连续型创建自定义的Drop文件夹模板

这是我不希望所有的文件被放入一个文件夹中, 我必须在根文件夹内创建一个像Folder1,Folder2这样的文件夹结构。

基于文件扩展名的文件都将被丢弃特定foldder

任何一点如何实现这一目标,

回答

0

如果您使用的是默认的构建过程模板(或衍生物)复制到DropFolder的操作位于Finally区块Try Compile, Test and Associate Changesets and Work Items之内。您将不得不用您的自定义序列替换该单一的Copy to Drop Location动作。 FindMatchingFiles可用于根据搜索条件选择一组文件。

尝试复制单个项目时会出现一个问题; TFS构建活动没有为此采取行动;仅适用于CopyDirectory。您可以设置InvokeProcess,或者从012xx和Powershell动作中添加Community TFS Build Extensions以支持此类任务。

如果您使用的是基本的DefaultTemplate,我强烈建议您对其副本进行更改并将其用于您的构建。

2

如果你很高兴修改TFS构建模板,那么Torbjörn的答案肯定是要走的路。定制构建模板将使您完全控制输出。然而,这可能是矫枉过正的,特别是如果你不熟悉WF和Team Build的内幕。另一种方法是编写一些将作为构建部分运行的msbuild。

为此创建一个名为“DropTidy.proj”文件并编辑文件,以便它看起来要像这样

<Project DefaultTargets="CopySQLReleaseFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 

    <Target Name="CopySQLReleaseFiles"> 

    <ItemGroup> 
     <SqlBuildOutput Include="$(OutDir)\*.sql" /> 
    </ItemGroup> 

    <Copy SourceFiles="@(SqlBuildOutput)" DestinationFolder="$(OutDir)\SQL" /> 

    </Target> 

</Project> 

上面的例子将所有文件复制以“SQL”的扩展一个名为“SQL”的文件夹。 $(OutDir)是团队构建使用的工作文件夹,它与构建代理上的构建工作区中的“Binaries”文件夹相关联

将文件检入TFS,然后将其添加到“要构建的项目”列表中在团队建设定义。确保它是列表中的最后一个“解决方案”,以便它在构建中的其他解决方案之后运行。还要确保你检查了proj文件的文件夹是你的构建工作区的一部分。

运行你的构建,你应该在你的放置位置看到一个名为SQL的新文件夹。

+0

谢谢,但我的应用程序是DotnetNuke,我有很多文件夹像App_LocalResources,DesktopModules,像DotnetNuke \ DesktopModules \ Module1,module2,每个文件都应该复制到特定位置,我必须创建包含所有文件夹的DotNetNuke文件夹这个文件,在Xaml下降foler事件我可以创建一个代码活动,我不知道如何创建这个,你能指点我一些引用 – user804401

+0

谢谢詹姆斯,这工作像一个魅力。 – ChuckT

相关问题