0

我需要重建一组自定义 TFS 构建活动,并收到以下错误。我在谷歌上搜索的印象是,这是因为 MS 将 Microsoft.Build.Engine 包从 4.0 框架中拉出并将其包含在 VS 工具中。

无法解析主要参考“Microsoft.TeamFoundation.Build.Workflow,Version=12.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL”,因为它间接依赖于 .NET Framework 程序集“Microsoft.Build .Engine,Version=12.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a",其版本"12.0.0.0"高于当前目标框架中的"4.0.0.0"版本。

有什么想法我能做些什么吗?我的目标是 4.5 框架,安装了 VS 2012 和 2013,尽管使用 2012 来构建这个包。

4

3 回答 3

1

检查对Microsoft.Build.Engine或引用路径的引用。MsBuild 二进制文件及其依赖项已从c:\windows\Microsoft.NET文件夹移至:C:\Program Files (x86)\MSBuild\12.0\Bin

于 2013-10-30T21:13:43.310 回答
0

我在 Visual Studio 2012 中遇到了同样的问题。

我在 VS2013 中重新创建了我的解决方案,所有问题都消失了!不是真正的解决方案,但如果您可以访问 2013,那么我建议您尝试一下。

于 2013-12-20T11:54:23.550 回答
0

我遇到了类似的问题,总的来说,Lee Higgitt 的回答是正确的。原因是 Microsoft.TeamFoundation.Build.Workflow v.12 依赖于 Microsoft.Build.dll v.12,我了解到这需要使用 Microsoft.Build.Tasks.v12.0 完成构建。 dll。如果 MSBuild 属性 VisualStudioVersion 设置为 12.0(例如,当 sln 是 VS 2013 sln 时),则使用 Microsoft.Build.Tasks.v12.0.dll。相反,如果 VisualStudioVersion 设置为 11.0(例如,当它是 VS 2012 sln 时),则
使用 Microsoft.Build.Tasks.v4.0.dll。v4 Tasks dll 产生错误;v12 任务 dll 没有。一般来说,然后,将 sln 升级到 VS 2013 将修复它。

但是,如果使用的是 TFS 构建服务器,那就另当别论了。即使 VisualStudioVersion 为 12.0,由于使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 进行构建,并且该目录中仅存在 v4 Tasks dll,因此构建被迫使用v4 Tasks dll,导致产生错误。

您可能认为强制构建使用 x86 版本的 MSBuild 可以完成这项工作,但是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 仍然只包含 v4 Tasks dll!

根据我的命令行测试,当使用 C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe 完成构建时,v12 Tasks dll 存在于该目录中并被使用,因此构建工作正常!

另外,我把上面的问题简单化了。我尝试将 v12 Tasks dll 和 Microsoft.Build.Utilities.v12.0.dll 复制到 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中,但这不允许该目录中的 msbuild 实例构建我的 sln 成功了。

总之,我认为这一定是微软的bug。我会和他们一起创建一张票,并在我学到任何东西时更新这个线程。

更新:

这是Microsoft Connect 上的问题

更新 2:

Microsoft Connect 上的问题可以看出,对于 TF Build 案例,如果使用 TFS 2013 附带的模板,则不会重现此问题(尽管我自己还没有机会确认这一点)。所以,要解决这个问题...

  • 如果它发生在本地,请将解决方案升级到 VS 2013。
  • 如果它在 TFS 构建服务器上,请确保正在使用 Microsoft 最新模板的逻辑。
于 2014-03-07T23:22:57.120 回答