アプリケーションが.NET Core 2.1.3に対してビルドされていることを確認したいので、SDKのバージョン2.1.401をインストールし、プロジェクトのTargetFrameworkVersion
を2.1.3
に設定しました。
これは私に次のエラーメッセージを与えます(私の強調):
C:\ Program Files\dotnet\sdk\2.1.401\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5):エラーNETSDK1045:現在の.NET SDKは、.NET Core 2.1.3のターゲットをサポートしていません。NETCore 2.1以下をターゲットにするか、.NET Core 2.1.3をサポートするバージョンの.NET SDKを使用してください。
興味深いのは、ビルドが新しくインストールされたSDK(2.1.401)を使用しているように見えることです。これは.NET Core 2.1.3をサポートすることになっていますが、それでも.NET Core 2.1.3はサポートされていません。これは私には意味がありません...
ここで何が悪いのでしょうか?
(私の答えとして、フレームワークに依存するアプリケーションを構築しているのではなく、自己完結型のアプリケーションを構築していると仮定します。)
2.1.3
を<TargetFramework>
の.csproj
として直接設定することはできません。これは、パッチバージョンだけが異なるためです。
次のエントリのみが許可されています: https://docs.Microsoft.com/en-us/dotnet/standard/frameworks
あなたの場合、.csproj
には<TargetFramework>netcoreapp2.1</TargetFramework>
が必要です。
ただし、Damirがコメントで指摘したように、<RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
も<PropertyGroup>
に追加すると、バージョンを強制できます。
[NuGetパッケージの管理]ダイアログを開き、暗黙的に使用されているメタパッケージMicrosoft.NETCore.App
のバージョンを確認すると、この変更の影響を確認できます。
<RuntimeFrameworkVersion>
がない場合は2.1.0
になります。それ以外の場合は2.1.3
になります。
しかし、それ以外に、使用されているバージョンを暗黙的に決定する他の要因も時々あります。
たとえば、自己完結型のアプリケーションを構築する場合は、<RuntimeIdentifier>
を指定する必要があります。これにより、フレームワークのバージョンも2.1.3
に強制されます 最高のパッチランタイムを公開する =マシン上で自動的に。
そうは言っても、ほとんどの場合、<RuntimeFrameworkVersion>
を手動で設定することはお勧めしません。
.NET Core 2.1以降、フレームワークに依存するすべてのアプリケーション(.NET Core 2.0以降を使用して構築されたもの) 自動的にロールフォワードされます から最新のminorランタイムの元のバージョンがシステムに存在しない場合にインストールされるバージョン。
したがって、.NET Core 2.1.3のみがターゲットシステムにインストールされている場合、フレームワークに依存する.NET Core 2.1.0アプリケーションは、そのランタイムとフレームワークを自動的に使用します。
.NET Coreバージョン選択メカニズム here についてもう少し読むことができます。
私は同じ問題を抱えていて、当時はビジュアルスタジオ2017を使用していて、最新の.net sdkをインストールしていました(2.2.401の時点で)。 sdk 2.2.107のインストール とそれをglobal.jsonファイルに追加すると(私はプロジェクトルートを持っています)、問題が解決しました。
{
"sdk": {
"version": "2.2.107"
}
}
また、Visual Studio開発者コミュニティフォーラムの この関連記事 も参照してください。