使用Microsoft.Build程序集生成WPF应用程序

使用Microsoft.Build程序集生成WPF应用程序,wpf,msbuild,microsoft.build,Wpf,Msbuild,Microsoft.build,我正在尝试使用Microsoft.build程序集在WPF(.Net Framework 4.0)项目上执行生成,即不从VS生成,也不从命令行使用常用标准MSBuild生成。我的所有项目都成功生成,但WPF项目失败,并显示以下消息: C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFx.targets(268,9):错误MSB4127:无法从程序集“PresentationBuildTasks,Version=4.0.0.

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

C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFx.targets(268,9):错误MSB4127:无法从程序集“PresentationBuildTasks,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”实例化“MarkupCompilePass1”任务。请验证任务程序集是使用与计算机上安装的Microsoft.Build.Framework程序集版本相同的Microsoft.Build.Framework程序集版本生成的,并且主机应用程序没有丢失Microsoft.Build.Framework的绑定重定向。无法将类型为“Microsoft.Build.Tasks.Windows.MarkupCompilePass1”的对象强制转换为类型为“Microsoft.Build.Framework.ITask”。[C:\Service\Test.csproj] C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFx.targets(268,9):错误MSB4060:“MarkupCompilePass1”任务已声明或使用不正确,或在构造过程中失败。检查任务名称和程序集名称的拼写

我发现引用(在堆栈溢出时)提到了更新的MSBuild程序集(12.0 vs 4.0)等。这些都已更新,即来自构建实用程序的引用,但运气不佳


有什么想法/建议吗?

我们正在使用一个类似的系统,问题似乎源于页面标签的编译:
MSBuild:Compile
。这似乎是以一种拉动4.0框架库的方式调用了MSBuild


对于构建可执行文件,我们只需修改配置以包含12.0 MSBuild配置所使用的配置。i、 例如,获取
C:\ProgramFiles(x86)\MSBuild\12.0\bin\MSBuild.exe.config
中的元素,并将它们放置在应用程序配置中。这为我们解决了问题。

我找到了解决方案。将绑定重定向添加到要在App.config中使用的版本:



我遇到了与OP完全相同的问题。您能更明确地说明您的修改是什么吗?我找到了你提到的配置文件以及MSBuild:Compile行,但我不知道如何合并这两个文件。哇,你救了我一天@Brent在我的例子中,“构建可执行文件”是一个ASP.NET项目,其Web.config的部分类似于“”-在此部分下,将依赖程序集xml粘贴到C:\Program Files(x86)\MSBuild\14.0\binThank@tofutim!这为我澄清了问题,我刚刚开始工作!其实虚惊一场,我还是和以前一样有问题。我正试着让这件事与科斯图拉/福迪合作。
<?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>