使用带有最新 microsoft.build.dll、v12.0.0.0 的 buildManager 时构建失败

Build Failure while using buildManager with the latest microsoft.build.dll,v12.0.0.0

我更新了构建工具中的程序集引用,以使用 microsoft.build、microsoft.build.engine 和 microsoft.build.framework 的最新版本 (v12)。但是在使用 BuildManager 编译项目时(我使用 Rebuild 选项进行编译)它在 Target : CleanWebsitesPackageCore 处失败,错误为 MSB4127: " "CheckPathAttributes" 任务无法从程序集 "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" 实例化。请确认任务程序集是使用与安装在您计算机上的相同版本的 Microsoft.Build.Framework 程序集构建的,并且您的主机应用程序没有缺少 Microsoft.Build.Framework 的绑定重定向。无法转换对象输入 'Microsoft.Web.Publishing.Tasks.CheckPathAttributes' 以输入 'Microsoft.Build.Framework.ITask'".

需要注意的一点是,如果我尝试通过从命令提示符调用 MSBuild.exe 来直接编译项目,它编译得很好。在查看日志时,我可以看到目标 "CleanWebsitesPackageCore" 在 "clean" 部分从未被调用过。想知道为什么在使用 buildmanager 时调用目标而不是在命令提示符下直接调用 msbuild.exe 时调用目标?

任何人都知道为什么会这样。提前致谢。

参考方案:http://blogs.microsoft.co.il/idof/2008/11/24/what-does-entity-framework-has-to-do-with-msbuild/

App.config 添加这个依赖程序集

  <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"/>
    </dependentAssembly>
    </assemblyBinding>
  </runtime>