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

问题描述 投票:2回答:2

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

我收到此错误,我无法弄清楚为什么或从哪里开始诊断它:

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.targets:错误MSB4127:“CodeAnalysis”任务无法从程序集“C:\ Program Files”(x86)中实现)\的MSBuild \微软\ VisualStudio的\ V12.0 \ CodeAnalysis \。\ FxCopTask.dll”。请验证是否使用与计算机上安装的Microsoft.Build.Framework程序集相同的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的绑定重定向”。有人能指出我正确的方向吗?

c# .net visual-studio visual-studio-2013 msbuild
2个回答
4
投票

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

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.