VS 2012中的MSBuild自定义活动

时间:2013-10-30 20:20:57

标签: c# build tfs

我需要重建一组自定义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来构建这个软件包。

3 个答案:

答案 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附带的模板,则不会重复此问题(尽管我没有机会确认这个我自己)。所以,要解决这个问题......

  • 如果是在本地进行,请将解决方案升级到VS 2013。
  • 如果它位于TFS构建服务器上,请确保使用Microsoft最新模板的逻辑。