最近,我在构建WPF应用程序时遇到了以下错误:
Microsoft VisualStudio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(3036,5):错误MSB4216:无法运行"GenerateResource“任务,因为MSBuild无法创建或连接到具有运行时"CLR4”和体系结构"x64“的任务主机。请确保(1)所请求的运行时和/或体系结构在计算机上可用,(2)确保所需的可执行文件"C:\Program (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\MSBuild.exe“存在并可以运行”。
C:\Program (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(3058,7):error MSB4028:无法从"FilesWritten“参数检索"GenerateResource”任务的输出。对象与目标类型不匹配。
帮助我将系统变量DISABLEOUTOFPROCTASKHOST
设置为1
。这个解决方案是谷歌搜索的,我找不到关于正在发生的事情以及为什么DISABLEOUTOFPROCTASKHOST
帮助我的解释。
有人能向我解释什么是错误的原因,为什么变量帮助了我?
发布于 2020-10-28 06:04:12
在您的端中,您似乎已经编译了一个与主机MSBuild实例不同的架构的资源。这可能是由于项目资源文件的不同版本或使用不同版本的代码需要使用不同的MSBuild(arm64\msbuild.exe
) CLR启动不同版本的额外进程而造成的。
因此,所以的方法是应该让MSBuild始终遵循当前的文件构建版本,也就是说,它可以在相同的MSBuild构建过程下在不同版本的构建机制之间自动切换。
解决方案是将这些xml节点添加到xxx.csproj
文件中:
<PropertyGroup>
<GenerateResourceMSBuildArchitecture>CurrentArchitecture</GenerateResourceMSBuildArchitecture>
<GenerateResourceMSBuildRuntime>CurrentRuntime</GenerateResourceMSBuildRuntime>
</PropertyGroup>
或将环境变量DISABLEOUTOFPROCTASKHOST
添加到1
。(让它在同一MSBuild.exe
构建过程下在不同版本的构建机制之间切换)
发布于 2021-04-02 16:14:46
我也犯了同样的错误。但是通过修复VisualStudio2019,关闭VS,删除.vs隐藏文件夹(在解决方案文件夹下),bin和obj文件夹,然后重新启动VS。幸运的是我的问题解决了。
https://stackoverflow.com/questions/64553157
复制相似问题