我正在尝试实现连续构建过程,如果我查看序列中的XAML Drop Folder我想指定一个自定义模板
即我不想将所有文件都放在一个文件夹中, 我必须在根文件夹中创建像Folder1,Folder2这样的文件夹结构。
基于文件扩展名的文件必须删除到特定的折叠器
任何一点如何实现这一目标,
答案 0 :(得分: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的新文件夹。
答案 1 :(得分:0)
如果您使用的是默认构建流程模板(或其衍生物),则复制到DropFolder的操作位于Finally
Try Compile, Test and Associate Changesets and Work Items
块内。您必须使用自定义序列替换单个Copy to Drop Location
操作。 FindMatchingFiles
可用于根据搜索标准选择一组文件。
尝试复制单个项目时会出现一个问题; TFS构建活动没有针对该行动;仅适用于CopyDirectory
。您可以设置InvokeProcess
,或者从Community TFS Build Extensions
和Robocopy
操作添加Powershell
来支持此类任务。
如果您使用的是基本的DefaultTemplate,我强烈建议您对其进行更改并将其用于构建。