Visual Studio 2015 Update 1 和 XAML 构建模板

10

所以我要问我的原始问题,但是我会回答它,因为我找到了解决方案。

自从我最近将我的开发工具箱从VS 2015升级到VS 2015更新1之后,我的自定义XAML模板遇到了一个错误,这个错误似乎不是由我引起的。我想知道为什么?

大多数人可能看到并且我也看到的构建异常: Cannot set unknown member 'Microsoft.TeamFoundation.Build.Activities.RunScript.FailOnNonZeroExitCode'(type XamlObjectWriterException)


1
很酷的你与社区分享问题和解决方案,加一赞,欢迎来到SO。 - Chris W.
谢谢!我讨厌微软这样偷偷摸摸的添加功能,尤其是在最方便的时候(应用交付周)。 - adboll
1个回答

21

原来微软在Visual Studio 2015更新1中进行了某种模式更改,向我在XAML中体验到的4行代码添加了一个属性,这将破坏自动构建模板,如果正在运行VS 2015版本的构建控制器和代理。不确定构建控制器是否可以更新以匹配此更改,但以下是我在两个XAML文件中发现的区别:

没有额外属性时正常:

<mtba:RunScript Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script before MSBuild" Enabled="True" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_1" />
<mtba:RunScript Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script after MSBuild" Enabled="True" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_2" />
<mtba:RunScript Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script before Test Runner" Enabled="True" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_3" />
<mtba:RunScript Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script after Test Runner" Enabled="True" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_4" />

使用更新1更改模式(相同的4行代码):

<mtba:RunScript Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script before MSBuild" Enabled="True" FailOnNonZeroExitCode="True" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_1" />
<mtba:RunScript Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script after MSBuild" Enabled="True" FailOnNonZeroExitCode="True" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_2" />
<mtba:RunScript Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script before Test Runner" Enabled="True" FailOnNonZeroExitCode="True" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_3" />
<mtba:RunScript Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" DisplayName="Run optional script after Test Runner" Enabled="True" FailOnNonZeroExitCode="True" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" sap2010:WorkflowViewState.IdRef="RunScript_4" />

如果您无法更新构建控制器,则可以使用以下解决方案/技巧:

  1. 对模板进行更改并保存。
  2. 删除上述行中的4个属性:FailOnNonZeroExitCode="True"。
  3. 保存XAML而不进行进一步更改。
  4. 如果需要进行其他更改,请重复此过程。

我将进行测试以查看是否可以更新我们的构建控制器来更新至版本1,以永久性地解决此问题,并在之后发布结果。


我欠你一瓶啤酒!;) - Ivan Prodanov
1
+1 这并没有解决我的问题,但是让我找到了解决方案。VS 2015 向我的 TFS 2013 XAML 构建模板添加了一些无用的内容(可能本来就不应该这样做)。 - Matt Ruwe
1
我欠你一个 :) - LeonardoX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接