【问题标题】:TFS 2012 build definition: Parameter Items to Build: cannot convert value Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettingsTFS 2012 构建定义:要构建的参数项:无法转换值 Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings
【发布时间】:2013-04-23 07:41:40
【问题描述】:

在对我的构建模板进行大量编辑后(我在 2012 年重新创建它们以避免任何问题。但后来我想我马虎了,只是从旧的工作流程中复制/粘贴了整个块,我想那一定是完全破坏了我的版本控制)我现在遇到了一个基于我编辑的构建模板的构建定义的问题。 (所有其他的似乎都工作正常。所以我想一个在所有编辑过程中都遇到了问题。(我主要是在构建模板中向程序集添加和删除 Version=11.0.0.0))

确切的错误是:

要构建的参数项:无法转换值 'Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings' 的 键入 Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings 输入 Microsoft.TeamFoundation.Build.Workflow.Activities.Buildsettings, 重置为默认值。

在编辑构建定义并希望选择要构建的项目/解决方案和配置时显示。实际上,现在我无法再保存(没有错误),并且该值再次被删除。

(我正在针对 TFS 2012 使用 VS 2012(仍然安装 VS 2010)。)

如何解决?

【问题讨论】:

    标签: visual-studio-2012 build build-definition


    【解决方案1】:

    打开您的 XAML 并查看 Activity 根节点上的 xmlns

    这是我的剪辑版:

    <Activity mc:Ignorable="sads sap sap2010" <!--Removed-->
     xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:mt="clr-namespace:Microsoft.TeamFoundation;assembly=Microsoft.TeamFoundation.Common"
     xmlns:mtbc="clr-namespace:Microsoft.TeamFoundation.Build.Client;assembly=Microsoft.TeamFoundation.Build.Client"
     xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow"
     xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow"
     xmlns:mtbwt="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Tracking;assembly=Microsoft.TeamFoundation.Build.Workflow"
     xmlns:mttbb="clr-namespace:Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities;assembly=Microsoft.TeamFoundation.TestImpact.BuildIntegration"
     xmlns:mtvc="clr-namespace:Microsoft.TeamFoundation.VersionControl.Client;assembly=Microsoft.TeamFoundation.VersionControl.Client"
     xmlns:mtvc1="clr-namespace:Microsoft.TeamFoundation.VersionControl.Common;assembly=Microsoft.TeamFoundation.VersionControl.Common"
    

    查找特定于版本的引用(通常是“10.0”或“11.0”)并删除它们,使它们看起来像我上面的那些。

    此外,请检查您的项目引用并确保它们不是特定于版本的。

    【讨论】:

    • 已经这样做了 - 模板似乎没有问题,因为它是正确的(我尝试了几个有版本和没有版本的版本)。实际定义可能会间歇性地被破坏,因为基于相同模板构建的其他定义有效。另一方面,重新启动工作室后它再次工作。
    【解决方案2】:

    以下是如何更改 TFS 模板中的程序集:

    • 在源代码管理资源管理器中,浏览到 BuildprocessTemplates 和 打开(双击或从右键菜单中选择“查看”) 您的构建所基于的模板(为您提供上述内容的模板) 错误)
    • 您应该会看到工作流的可视化图表。底部是 三个选项卡:变量、参数和导入。点击参数。
    • 选择 BuildSettings 参数
    • 找到属性框。争论的属性是: ArgumentType、Direction、IsRequired、Name 和 Value。
    • Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings 应该是选定的类型,但问题是(典型)你不能 告诉选择了这个程序集的哪个版本。点击下拉 向下。
    • 在列表底部选择“浏览类型...”

    现在您可以看到所有可用的程序集及其版本。选择你想要的,最有可能升级到最新的。请务必检查所有各种争论,并确保它们的类型都设置为相同的版本以确保兼容性。

    您现在保存文件时可能会遇到问题。一切可能看起来都很好。 TFS 表示它知道文件已更改,签入似乎很顺利,但是当文件打开时,程序集仍然反映 v 10。如果您从文件系统中打开相同的文件,您可能会发现文件中的程序集确实是 v 11. 送什么?不知道。 VS中的某种故障。

    但这里有一个解决方法:

    1. 从您的系统中卸载 VS 2010 Team Foundation Server Power Tools 开发机器
    2. 打开 VS 2012 并确保模板没有待处理的更改(撤消)并获取最新版本
    3. 检查以进行编辑(重要)但不要在 VS 中进行任何更改(它 无论如何都不会打开,因为 10 个程序集已在 上一步)
    4. 关闭 VS 2012(很重要,因为如果它处于打开状态,您的更改似乎没有被采纳)
    5. 从文件系统打开模板(我使用记事本消除了来自 VS 的任何干扰)并在“Version=10.0.0.0”和“Version=11.0.0.0”上执行查找/替换并保存文件
    6. 打开 VS 2012,现在您应该可以看到工作流设计器了
    7. 当然,签入文件

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 2016-10-11
      • 2016-04-18
      • 2019-03-31
      • 2015-08-07
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多