使用Microsoft构建WPF应用程序.构建组件



我正在尝试在WPF()上执行构建。. Net Framework 4.0)项目。构建程序集,即不是从VS构建,也不是从命令行使用标准的MSBuild构建。我的所有项目都成功构建,但WPF项目失败,并显示以下消息:

C:WINDOWSMicrosoft.NETFramework64v4.0.30319Microsoft.WinFx.targets(268,9):错误MSB4127:"MarkupCompilePass1"任务无法从程序集"PresentationBuildTasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"实例化。请验证任务程序集已使用与计算机上安装的Microsoft.Build.Framework程序集相同的版本构建,并且您的主机应用程序没有丢失Microsoft.Build.Framework的绑定重定向。无法强制转换类型为"Microsoft.Build.Tasks.Windows"的对象。MarkupCompilePass1'输入'Microsoft.Build.Framework.ITask'。(C: Test.csproj服务)C:WINDOWSMicrosoft.NETFramework64v4.0.30319Microsoft.WinFx.targets(268,9):错误MSB4060:"MarkupCompilePass1"任务声明或使用不正确,或在构建期间失败。检查任务名称和程序集名称的拼写。

我发现引用(Stack Overflow)提到更新的MSBuild程序集(12.0 vs 4.0)等。这些都已更新,即来自构建实用程序的引用,但运气不好。

意见/建议吗?

我们正在使用一个类似的系统,问题似乎源于Page标签的编译:<generator>MSBuild:Compile</generator>。这似乎是以拉4.0框架库的方式调用MSBuild

对于我们的构建可执行文件,我们简单地修改了配置,以包含12.0 MSBuild配置使用的配置。也就是说,将C:Program Files (x86)MSBuild12.0binMSBuild.exe.config中的元素放在您的应用程序配置中。这为我们解决了问题。

我找到了一个解决方案。在App.config:

中添加一个绑定重定向到你想要使用的版本
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <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="15.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Framework" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

最新更新