构建环境CodeAnalysis任务无法实例化

时间:2015-01-27 00:20:30

标签: c# .net visual-studio visual-studio-2013 msbuild

我正在尝试使用Microsoft.Build.Evaluation.Project在我的项目中运行MSBuild。

我收到了这个错误,我无法弄清楚原因,或者从哪里开始诊断它:

  

C:\ Program Files   (86)\的MSBuild \微软\ VisualStudio的\ V12.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.targets:   错误MSB4127:无法实现“CodeAnalysis”任务   程序集“C:\ Program Files   (86)\的MSBuild \微软\ VisualStudio的\ V12.0 \ CodeAnalysis \。\ FxCopTask.dll”。   请验证任务程序集是否已使用相同版本构建   Microsoft.Build.Framework程序集作为您计算机上安装的程序集   您的主机应用程序没有错过绑定重定向   Microsoft.Build.Framework。无法转换类型的对象   输入'Microsoft.Build.Tasks.CodeAnalysis'   'Microsoft.Build.Framework.ITask'。

  • 我尝试在构建文件中使用ToolsVersion="12.0"
  • 我已检查Microsoft.CodeAnalysis.targets并确保FxCopTask.dll正常工作
  • 我删除了无关的引用,现在只引用Microsoft.BuildMicrosoft.Build.Framework
  • 我在同一个解决方案中成功地在shell进程中使用了MSBuild.exe
  • This question似乎解决了这个问题,但它正在使用命令行。

我不确定如何“验证任务程序集”或添加“Microsoft.Build.Framework的绑定重定向”。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

这里的答案在于混淆参考。默认Microsoft.Build引用为v4.0

原来引用最新版本(至少在VS 2013社区中)我必须浏览C:\Program Files (x86)\MSBuild\12.0\bin中的程序集并手动添加引用。成功了!

感谢BuildManager to use another version of MSBuild指出了这个解决方案。

答案 1 :(得分:1)

'添加绑定重定向'正在将以下内容添加到您的app.config文件中:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="12.0.0.0"/> <!--verify version!-->
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

对我来说,这解决了这个问题。我的错误始于The "csc" task could not be instantiated