项目中多个构建模板(xaml文件)的问题

时间:2013-01-31 19:37:03

标签: tfs build-process tfs2012

我的TFS Build项目遇到了问题。我正在关注here中的示例,直到在VS中设置项目。

我有一个仅用于自定义活动的项目和一个仅用于模板的单独项目。我遇到的问题是Templates项目只能包含一个xaml文件。如果我复制并将其粘贴到同一个项目中,它就不会构建。我收到以下错误:

错误102在“Resources”参数中多次指定了项目“obj \ Debug \ TfsBuild_Process_BeforeInitializeComponentHelper.txt”。 “Resources”参数不支持重复项目。

但如果我删除它,它会建立得很好。一切正常,这意味着如果我对构建进行排队,它就会构建。

我也尝试了here上建议的解决方案,但它似乎无法解决我的问题。

  

解决方案:

     

在解决方案资源管理器中重命名表单名称。

     

更改.cs和Designer.cs文件中的类名。

     

更改构造函数和析构函数名称(与类名称相同)

     

更改名称空间名称(如果需要)。

Here是下载项目的链接。

我似乎无法弄明白为什么。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:8)

我不知道你是否还有这个问题,但我今天也遇到了这个问题。我找到了一个决议(如果你仍然面临问题)可以帮助你或其他人。

复制Build Process模板时,它会自动将x:Class属性设置为 TfsBuild.Process 。当您有多个具有相同值的流程模板时,您将在构建项目时遇到此错误。

<Activity mc:Ignorable="sads sap sap2010" x:Class="TfsBuild.Process" this:Process.BuildNumberFormat="$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)" this:Process.AgentSettings="[New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly}]" this:Process.Verbosity="[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]" this:Process.OutputFullHistory="True" this:Process.OutputBranchOrigin="True" this:Process.OnlyOutputChangedFiles="True" this:Process.StartChangeset="0"...... 

我通过将 TfsBuild.Process 替换为每个模板的其他名称(例如 TfsBuild.ProcessLabDefault )来解决问题。请注意,您还应该更改 this:Process 的所有实例,因为这两个实例已链接在一起(例如 this:ProcessLabDefault )。

<Activity mc:Ignorable="sads sap sap2010" x:Class="TfsBuild.MyProcess" this:MyProcess.BuildNumberFormat="$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)" this:MyProcess.AgentSettings="[New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly}]" this:MyProcess.Verbosity="[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]" this:MyProcess.OutputFullHistory="True" this:MyProcess.OutputBranchOrigin="True" this:MyProcess.OnlyOutputChangedFiles="True" this:MyProcess.StartChangeset="0"...... 

我没有找到一种方法来改变这一点,使用界面,查看代码&amp;查找和替换作品。希望它有所帮助。

答案 1 :(得分:5)

我使用了以下方法并且效果很好。所有需要替换的是原始xaml第一行的两个位置的TfsBuild。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3fb6b89-b711-4a02-a10a-a88a0cb4f714/unable-to-add-more-than-one-templatexaml-into-activity-library-workflow-project?forum=tfsprocess

从链接:

1在“源代码管理”中右键单击“DefaultTemplate.xaml”,然后选择“查看方式...”以在记事本中打开它(您也可以右键单击VS中的模板并选择“查看代码”)。

2然后在第一行更改:

  1. **x:Class="TfsBuild.Process"****x:Class="YourProcessTemplateName.Process"**
  2. **xmlns:this="clr-namespace:TfsBuild"****xmlns:this="clr-namespace:YourProcessTemplateName"**

答案 2 :(得分:0)

我遇到了这个问题并希望添加我找到的解决方案。如果检查XAML文件的属性,当您将它们链接到项目时,会为它们分配一个XamlAppDef的BuildAction。将此更改为“内容”将解决错误。

要查找需要编辑的属性屏幕,只需在解决方案资源管理器中突出显示XAML文件,然后按F4或右键单击文件,然后从上下文菜单中选择“属性”。

希望这有帮助。