web-dev-qa-db-ja.com

現在の.NET SDKは、.NET Core 2.1.3のターゲットをサポートしていません

アプリケーションが.NET Core 2.1.3に対してビルドされていることを確認したいので、SDKのバージョン2.1.401をインストールし、プロジェクトのTargetFrameworkVersion2.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はサポートされていません。これは私には意味がありません...

ここで何が悪いのでしょうか?

3
Robert Hegner

(私の答えとして、フレームワークに依存するアプリケーションを構築しているのではなく、自己完結型のアプリケーションを構築していると仮定します。)

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 についてもう少し読むことができます。

1
haindl

私は同じ問題を抱えていて、当時はビジュアルスタジオ2017を使用していて、最新の.net sdkをインストールしていました(2.2.401の時点で)。 sdk 2.2.107のインストール とそれをglobal.jsonファイルに追加すると(私はプロジェクトルートを持っています)、問題が解決しました。

{
  "sdk": {
    "version": "2.2.107"
   }
}

また、Visual Studio開発者コミュニティフォーラムの この関連記事 も参照してください。

1
Juuso Laanti