“NETSDK1061: 專案是使用 Microsoft.NETCore.App 版本 2.1.2 還原的, 但使用當前設定, 將改用版本 2.1.0。”的處理方法
阿新 • • 發佈:2019-02-13
我是在使用.net core釋出控制檯程式的時候遇到的這個錯誤,而且是所有引用的向專案都報這個錯誤。主要是為了釋出程式中包含“.exe”結尾的可執行檔案,所以選擇了“獨立”釋出,執行時選擇的“win-x64”,而這種釋出方式又報這個錯誤。
以下是我找到的解決方法。
NETSDK1061錯誤解決
- 在vs生成和執行都正常,釋出的時候報錯
- .netcore控制檯專案引用另一個類庫
- 錯誤資訊
NETSDK1061: 專案是使用 Microsoft.NETCore.App 版本 2.1.2 還原的, 但使用當前設定, 將改用版本 2.1.0。要解決此問題, 請確保將相同的設定用於還原和後續操作 (如生成或釋出)。通常, 如果 RuntimeIdentifier 屬性是在生成或釋出過程中設定的, 而不是在還原過程中進行的, 則會發生此問題。有關詳細資訊, 請參閱 https://aka.ms/dotnet-runtime-patch-selection
解決辦法
- 在所有專案的專案檔案的<PropertyGroup>節點加上的
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
- 有關說明
- 大概意思是說,正常使用命令restore還原包的時候會選擇最新的程式版本,釋出的時候命令restore被隱式呼叫,不能使用最新的版本,兩者版本不一致就會報錯。將
TargetLatestRuntimePatch
屬性設定為 true就避免在釋出的時候還原
猜想
- 既然版本不一致會導致衝突,那我有個猜想,專案使用的版本是2.1.0,最新的是2.1.2,那隻要把2.1.2版本解除安裝,是正常還原和釋出的時候還原同一版本,那麼就不會產生錯誤了。有待驗證
總結
- 根據異常提示資訊到搜尋引擎搜尋無果,那麼就根據裡面的連結去查詢解決方法。
- 一開始也是一臉懵逼,加了個屬性解決了問題,還是不知道怎麼回事,還是在寫隨筆的時候在看多幾次才突然理解的
- 知道了問題發生的原因,只要不觸發發生問題的條件那麼就算解決了