c# - DisableOutOfProcTaskHost 有什么作用?
问题描述
我最近在构建 WPF 应用程序时遇到了以下错误:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(3036,5):错误 MSB4216:无法运行“GenerateResource”任务,因为 MSBuild 可以不创建或连接到运行时“CLR4”和架构“x64”的任务主机。请确保 (1) 请求的运行时和/或架构在机器上可用,以及 (2) 所需的可执行文件“C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin \amd64\MSBuild.exe" 存在并且可以运行。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(3058,7):错误 MSB4028:无法从中检索“GenerateResource”任务的输出“FilesWritten”参数。对象与目标类型不匹配。
帮助我的是将系统变量设置DISABLEOUTOFPROCTASKHOST
为1
. 这个解决方案是用谷歌搜索的,我找不到关于正在发生的事情以及为什么DISABLEOUTOFPROCTASKHOST
对我有帮助的解释。
谁能向我解释错误的原因是什么以及为什么该变量对我有帮助?
解决方案
在您这边,您似乎编译了一个与主机 MSBuild 实例具有不同架构的资源。这可能是由于项目资源文件的不同版本或使用不同版本的代码需要使用不同的CLR启动不同版本的MSBuild ( arm64\msbuild.exe
)的附加进程的问题引起的。
所以做法是让MSBuild始终跟随当前文件构建版本,即在同一个MSBuild构建过程下,可以自动切换不同版本的构建机制。
解决方案是在您的xxx.csproj
文件中添加这些 xml 节点:
<PropertyGroup>
<GenerateResourceMSBuildArchitecture>CurrentArchitecture</GenerateResourceMSBuildArchitecture>
<GenerateResourceMSBuildRuntime>CurrentRuntime</GenerateResourceMSBuildRuntime>
</PropertyGroup>
或者添加环境变量DISABLEOUTOFPROCTASKHOST
到1
.(让它在同一个MSBuild.exe
构建过程下不同版本的构建机制之间切换)
推荐阅读
- ios - 用于语言环境 fr_CA 的 Swift 货币格式化程序
- json - POSTMAN Laravel 必须是有效的 JSON 字符串
- css - 具有一个元素的灵活子元素在父容器的上边框之外展开
- firebase - Android Firebase 分析事件显示在可调试视图中,但 8 小时后未显示在事件仪表板中
- c - 如何使用 Paho C 库连接到 HiveMQ 代理
- botframework - 如何使用 Composer 对话框读取在 Bot 自适应卡中选择的 Bot 对话框中的选择集值
- mysql - mysql 5.7.30 输入给定的临时密码后,用户'root'@'localhost'(使用密码:YES)的访问被拒绝?
- python - 如何在 Python 中捕获日志库本身引发的错误
- c++ - 重载 [] 运算符的问题 (c++)
- visual-studio - 如何将 VS2019 更新到非最新版本?