我正在尝试实现连续构建过程,如果我查看顺序放置文件夹中的 XAML,我想指定一个自定义模板
也就是说,我不希望所有文件都放在一个文件夹中,我必须在根文件夹内创建一个文件夹结构,如 Folder1、Folder2。
基于文件扩展名的文件必须被放到特定的文件夹中
任何一点如何实现这一点,
我正在尝试实现连续构建过程,如果我查看顺序放置文件夹中的 XAML,我想指定一个自定义模板
也就是说,我不希望所有文件都放在一个文件夹中,我必须在根文件夹内创建一个文件夹结构,如 Folder1、Folder2。
基于文件扩展名的文件必须被放到特定的文件夹中
任何一点如何实现这一点,
如果您对修改 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) 是团队构建使用的工作文件夹,与构建代理的构建工作区中的“二进制”文件夹相关
将文件签入 TFS,然后将其添加到 Team Build Definition 中的“要构建的项目”列表中。确保它是列表中的最后一个“解决方案”,以便它在构建中的其他解决方案之后运行。还要确保将 proj 文件签入的文件夹是构建工作区的一部分。
运行您的构建,您应该会在放置位置看到一个名为 SQL 的新文件夹。
如果您使用的是默认构建过程模板(或其派生模板),则复制到 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,我强烈建议您在其副本中进行更改并将其用于您的构建。