Microsoft.Build.BuildEngine.Engine 在构建 WPF 应用程序时抛出错误

2024-02-10

我正在使用 Microsoft.Build.BuildEngine.Engine 构建 WPF 应用程序。这对于类库和 Web 应用程序来说已经成功运行,但现在尝试使用它来构建 WPF 应用程序时,我收到以下错误:

目标标记CompilePass1: c:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.WinFX.targets(294,9): 错误 MC1000:未知的构建错误, 'API 限制:程序集 '文件:///C:\程序文件 (x86)\参考 Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll' 已经从不同的地方加载了 地点。它无法从 同一地点内的新位置 应用程序域。完成建设目标 项目中的“MarkupCompilePass1” “TestWindowsApplication.csproj”-- 失败的。

使用 VisualStudio 2008 构建(即从菜单构建)时,此应用程序构建良好,但使用 Microsoft.Build.BuildEngine.Engine 时,它​​会引发此构建错误。有人知道这是怎么回事吗?


我遇到了同样的问题并发现this http://msdn.microsoft.com/en-us/library/aa970678(VS.85).aspx在 msdn 上说

默认情况下,标记编译运行在 与 MSBuild 相同的 AppDomain 引擎。这为我们提供了重要的 性能提升。这种行为可以 可以通过以下方式切换 始终在单独的域中编译标记文件 财产。后者有 卸载所有参考的优点 通过卸载单独的组件 应用程序域。

因此,由于抛出的异常表明PresentationCore已加载到同一个AppDomain中,我使用以下方法切换了此属性:

projectToBuild.SetProperty("AlwaysCompileMarkupFilesInSeparateDomain", "True");

这似乎是关键。

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft.Build.BuildEngine.Engine 在构建 WPF 应用程序时抛出错误 的相关文章

随机推荐