【问题标题】:Issues with multiple build template (xaml files) in project项目中多个构建模板(xaml 文件)的问题
【发布时间】:2013-01-16 00:36:19
【问题描述】:

我的 TFS 构建项目有问题。就在 VS 中设置项目而言,我正在遵循 here 的示例。

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

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

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

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

解决方案:

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

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

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

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

Here是下载项目的链接。

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

【问题讨论】:

  • 遇到同样的问题,有什么运气吗?

标签: tfs build-process


【解决方案1】:

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

当您复制构建过程模板时,它会自动将 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"...... 

我没有找到一种方法来通过使用界面来改变这一点,查看代码和查找并替换工作。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我使用了以下方法,效果很好。需要替换的只是原始 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"**

    【讨论】:

    • 这比 IIMII 的答案更好(目前排名靠前),因为这只需要对文件进行两次更改。
    • 绝对更好。
    【解决方案3】:

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

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

    希望这会有所帮助。

    【讨论】:

    • 但是这样做会删除工作流的类型检查。如果希望他们的自定义模板稳定,我不建议这样做。
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多