1. 程式人生 > >.NET Core中NETSDK1061錯誤解決(轉載)

.NET Core中NETSDK1061錯誤解決(轉載)

開始 project publish 發布 卸載 runtime dep target void

NETSDK1061錯誤解決

  • 在vs生成和運行都正常,發布的時候報錯
  • .netcore控制臺項目引用另一個類庫
  • 錯誤信息
NETSDK1061: 項目是使用 Microsoft.NETCore.App 版本 2.1.2 還原的, 但使用當前設置, 將改用版本 2.1.0。要解決此問題, 請確保將相同的設置用於還原和後續操作 (如生成或發布)。通常, 如果 RuntimeIdentifier 屬性是在生成或發布過程中設置的, 而不是在還原過程中進行的, 則會發生此問題。有關詳細信息, 請參閱 https://aka.ms/dotnet-runtime-patch-selection

解決辦法

  • 用記事本打開所有項目的.csproj項目文件,在所有項目的項目文件中加上<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>,如下所示
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
        <TargetFramework>netcoreapp2.1</
    TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="11.0.2" /> </ItemGroup> </Project>

  • 有關說明
  • 大概意思是說,正常使用命令restore還原包的時候會選擇最新的程序版本,發布的時候命令restore被隱式調用,不能使用最新的版本,兩者版本不一致就會報錯。將TargetLatestRuntimePatch屬性設置為 true就避免在發布的時候還原

猜想

  • 既然版本不一致會導致沖突,那我有個猜想,項目使用的版本是2.1.0,最新的是2.1.2,那只要把2.1.2版本卸載,是正常還原和發布的時候還原同一版本,那麽就不會產生錯誤了。有待驗證

總結

  • 根據異常提示信息到搜索引擎搜索無果,那麽就根據裏面的鏈接去查找解決方法。
  • 一開始也是一臉懵逼,加了個屬性解決了問題,還是不知道怎麽回事,還是在寫隨筆的時候在看多幾次才突然理解的
  • 知道了問題發生的原因,只要不觸發發生問題的條件那麽就算解決了


原文鏈接

.NET Core中NETSDK1061錯誤解決(轉載)