Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DisableOutPropTaskHost做什么?_C#_.net_Wpf_Visual Studio_Msbuild - Fatal编程技术网

C# DisableOutPropTaskHost做什么?

C# DisableOutPropTaskHost做什么?,c#,.net,wpf,visual-studio,msbuild,C#,.net,Wpf,Visual Studio,Msbuild,我最近在构建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)请求的运行

我最近在构建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”任务的输出 从“filesWrite”参数检索。对象不匹配 目标类型

帮助我的是将一个系统变量
disableoutofprictaskhost
设置为
1
。这个解决方案是谷歌搜索的,我找不到关于发生了什么以及为什么
disableoutofprictaskhost
帮助了我的解释


有人能给我解释一下错误的原因以及变量对我有帮助的原因吗?

在您这边,似乎您编译的资源的体系结构与主机MSBuild实例不同。这可能是由于不同版本的项目资源文件存在问题,或者使用不同版本的代码需要使用不同的CLR启动不同版本的MSBuild
arm64\MSBuild.exe
)的附加进程

因此方法是让MSBuild始终遵循当前的文件生成版本,也就是说,它可以在同一MSBuild生成过程下自动在不同版本的生成机制之间切换

解决方案是在
xxx.csproj
文件中添加这些xml节点:

<PropertyGroup>   
     <GenerateResourceMSBuildArchitecture>CurrentArchitecture</GenerateResourceMSBuildArchitecture>
     <GenerateResourceMSBuildRuntime>CurrentRuntime</GenerateResourceMSBuildRuntime>
</PropertyGroup>

当前架构
当前运行时
1
添加环境变量
disableoutofpropictaskhost
(让它在同一
MSBuild.exe
构建过程下的不同版本的构建机制之间切换)

我遇到了相同的错误。 但通过修复Visual Studio 2019, 关闭VS、删除.VS隐藏文件夹(在解决方案文件夹下)、bin和obj文件夹,然后重新启动VS。
幸运的是,我的问题解决了。

嗨,jreh,有关于这个问题的更新吗?请检查我的回答是否有助于您处理此问题。如果有帮助,请不要忘记,这样它将帮助其他社区成员处理和搜索类似问题:)如果没有,请随时让我们知道:)嗨,谢谢你的回答,直到今天我才能够深入阅读你的回答,我将很快检查它,并让您知道。我在解决方案中的所有项目都设置了平台目标为x64(我不确定在这个答案的上下文中这是否意味着什么)。最奇怪的是,当我第一次克隆解决方案时,它编译时没有任何问题(它工作了几天)。据我所知,没有手动运行msbuild的实例,一切都是由VisualStudio完成的。与在我的电脑上不工作的代码完全相同,在jenkins build server上工作时没有设置环境变量。或者我认为问题与您的VS IDE或其环境有关。请检查您的电脑是否安装了其他第三方工具、程序或vs安装的扩展,这些扩展与msbuild或vs IDE的性能相连接,从而导致msbuild的差异。或禁用任何第三方vs扩展。此外,您可以使用启动VS来测试它。