【问题标题】:Build Failure while using buildManager with the latest microsoft.build.dll,v12.0.0.0将 buildManager 与最新的 microsoft.build.dll,v12.0.0.0 一起使用时构建失败
【发布时间】:2016-07-20 14:23:22
【问题描述】:

我更新了构建工具中的程序集引用,以使用最新版本 (v12) 的 microsoft.build、microsoft.build.engine 和 microsoft.build.framework。但是,在使用 BuildManager 编译项目时(我使用 Rebuild 选项进行编译),它在目标处失败:CleanWebsitesPackageCore,错误为 MSB4127:“无法从程序集“C:\Program Files (x86) 实例化“CheckPathAttributes”任务)\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”在“干净”部分从未被调用。想知道为什么在使用 buildmanager 时会调用目标,而不是在命令提示符下直接调用 msbuild.exe 时调用目标?

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

【问题讨论】:

  • 周围的 MSBuild 版本太多。转换错误表示您引用了错误版本的 Microsoft.Build.Framework。在我的机器上它是版本 14 并存储在 GAC 中。
  • 我已经从 c:\Program Files (x86)\MSBuild\12.0\bin 引用了 microsoft.build、microsoft.build.engine 和 microsoft.build.framework。所以在这不应该用 12.0 下的 MSBuild 编译吗?
  • 那是第 12 版,而不是第 14 版,因此无法在我的机器上运行。考虑到结果,大概也不是你的。查看您正在使用的 MSBuild.exe.config 文件,它有 很多 个 bindingRedirect 元素来解决这些版本号问题。您的 app.config 文件没有它们,它也需要它们。
  • 但是就像我在问题中所说的,当我尝试通过从 C:\Program Files (×86)\MSBuild\12.0\Bin 调用 msbuild.exe 直接编译项目时,编译运行良好。所以就像我说的那样,它在清理部分期间不会进入“CleanWebsitesPackageCore”目标,而当我通过 buildManager 尝试它并在该目标上失败时它会去那里。
  • 您是否使用正确版本的 .targets 文件也不明显。这些版本也太多了。

标签: .net c#-4.0 msbuild microsoft.build buildmanager


【解决方案1】:

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

App.config 添加这个dependentAssembly

  <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>

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多