簡體   English   中英

DisableOutOfProcTaskHost 有什么作用?

[英]What does DisableOutOfProcTaskHost do?

我最近在構建 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”參數。 Object 與目標類型不匹配。

對我有幫助的是將系統變量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構建過程下在不同版本的構建機制之間切換)

我有同樣的錯誤。 但通過修復 Visual Studio 2019,關閉 VS,刪除 .vs 隱藏文件夾(在解決方案文件夾下)、bin 和 obj 文件夾,然后重新啟動 VS。 幸好我的問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM