我想实现连续构建过程,如果我看XAML序列Drop文件夹中我想指定自定义模板TFS连续型创建自定义的Drop文件夹模板
这是我不希望所有的文件被放入一个文件夹中, 我必须在根文件夹内创建一个像Folder1,Folder2这样的文件夹结构。
基于文件扩展名的文件都将被丢弃特定foldder
任何一点如何实现这一目标,
我想实现连续构建过程,如果我看XAML序列Drop文件夹中我想指定自定义模板TFS连续型创建自定义的Drop文件夹模板
这是我不希望所有的文件被放入一个文件夹中, 我必须在根文件夹内创建一个像Folder1,Folder2这样的文件夹结构。
基于文件扩展名的文件都将被丢弃特定foldder
任何一点如何实现这一目标,
如果您使用的是默认的构建过程模板(或衍生物)复制到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,我强烈建议您对其副本进行更改并将其用于您的构建。
如果你很高兴修改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的新文件夹。
谢谢,但我的应用程序是DotnetNuke,我有很多文件夹像App_LocalResources,DesktopModules,像DotnetNuke \ DesktopModules \ Module1,module2,每个文件都应该复制到特定位置,我必须创建包含所有文件夹的DotNetNuke文件夹这个文件,在Xaml下降foler事件我可以创建一个代码活动,我不知道如何创建这个,你能指点我一些引用 – user804401
谢谢詹姆斯,这工作像一个魅力。 – ChuckT