我需要重建一组自定义TFS构建活动,并且收到以下错误。我是谷歌搜索的结果,这是因为MS将Microsoft.Build.Engine软件包从4.0 Framework中拉出来并将其包含在VS工具中。
主要参考“Microsoft.TeamFoundation.Build.Workflow,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”无法解析,因为它与.NET间接依赖框架程序集“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来构建这个软件包。
答案 0 :(得分:1)
检查对Microsoft.Build.Engine
的引用或参考路径。 MsBuild二进制文件及其依赖项已从c:\windows\Microsoft.NET
文件夹移至:C:\Program Files (x86)\MSBuild\12.0\Bin
答案 1 :(得分:0)
我在Visual Studio 2012中遇到了同样的问题。
我在VS2013中重新创建了我的解决方案,所有问题都消失了!不是一个真正的解决方案,但如果你能访问2013,那么我建议你试试。
答案 2 :(得分: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任务dll,导致产生错误。
您可能认为强制构建使用x86版本的MSBuild可以完成这项工作,但是,C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe仍然只包含v4任务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。
简而言之,我认为这一定是微软的错误。我将与他们一起创建一张票,并在我学习任何东西时更新这个帖子。
<强>更新强>
这是the issue on Microsoft Connect。
更新2:
从the issue on Microsoft Connect可以看出,对于TF Build案例,如果使用TFS 2013附带的模板,则不会重复此问题(尽管我没有机会确认这个我自己)。所以,要解决这个问题......