VisualStudio2015で.net standard 2.0 依存を要求する NuGet packageを導入する方法

※ 2024/02/17 追記

下記で、VS2015用の.net core 2.0 sdkを利用して.net standard2.0に対応するコンパイルが可能なように対策していますが、ここで使った.net core 2.0は、バージョンの更新が止まっているVS2015向けの特殊なSDKとなります。2024年2月以降のWindowsUpdateで.NETが更新され、うまく動作しないケースが出てきました。この場合、VS2015は諦めてVS2019(.NET5以降を使う場合)以降にアップグレードをお奨めします。プロジェクトファイルをVS2019で.net core 2.0以降(.NET 5.0SDKなど)のSDKを導入してコンパイルすれば、何の問題もなくコンパイルできます。

Visual Studio2015 で .net standard2.0 に依存するパッケージを追加する場合、.net framework4.8 や、.net framework4.7 のプラットフォームを選択してビルドしても、追加したパッケージが参照できなくビルドできない場合があります。下記のようなエラーが出ます

アセンブリ 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' に参照を追加する必要があります。

.net Standard2.0 の要件は、 .net Framework 4.6.1 ~ 4.8.1 を対象としているので、本来なら大丈夫なはずです。原因を調べると、.net standard 2.0 の要件を満たすためには、普通の.net framework4.8 sdk では、一部不足するモジュールがあるようです。VisualStudio2015用の .net core 2.0 パッケージをインストールすると、不足の無い .net Framework4.8となるようです。コンパイルできない インストールできない 追加できない 必要 必須 参照エラー

詳細は、下記リンクの.net standard の互換性情報でバージョン2.0 を選択すると記載されています。.Net Framework を利用する場合の注意書き欄に説明が書かれています。

.NET Standard - .NET | Microsoft Learn

 

よって、下記のVisualStudio2015用 .net core 2.0 sdk をインストールすれば、コンパイルが通るようになります。******.md とかかれた対象のバージョンをクリックするとダウンロード画面が出ます。2.1.201-sdk-download.md 当たりが適当でないかと思います。後付けになり申し訳ないですが、VisualStudio2015で.net standard 2.0を使うには、NuGet Packageがv3.6以上であるという条件もあります。NuGet Packageが古い場合、下記リンクからv3.6をインストールしてください。VS2015向けのものがあります。

core/release-notes/download-archives at main · dotnet/core · GitHub

 

NuGet Gallery | Downloads

 

補足ですが、.net standard とは、ある1っのバージョンの .net frameworkランタイムを指すでのはなく、mono や .NET Core など複数のプラットフォームにまたがる、.NET実装をグループにまとめた仕様を束ねる仕様になります。(下図の左を参照).net standard 2.0に対応するソースは、windowsだけでなく、linuxや組み込みでもそのまま共有することが部分的に可能ということになります。ただし、完全なマルチプラットフォームではなく、一部のプラットフォームでのみ利用できる固有APIが存在するそうです。マルチプラットフォームで作成する場合、.NET Core が推奨されます。また、比較的新しいプラットフォームの .NET5 は、.net standard ベースにしてはいますが(下図の右を参照)、完全に.net framework コードがそのまま動くわけではありません。いくつかの破壊的変更があり、修正が必要となります。しかし、.net framework ともかなりの部分で互換部分があります。そのまま共存したい場合は、ターゲットフレームワーク .net standard にすると、.net framework, .NET5 の共存ができます。

 



visualstudiomagazine.com