我正在使用 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(使用前将#替换为@)