最終的にVisual Studio 2017.2をインストールし、最初のプロジェクトを機能させようとしていますが、ここで対処したい問題に直面しています。
次のプロジェクトファイルとして記述されている非常に単純な.NET標準ライブラリがあります。
_<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
</PropertyGroup>
</Project>
_
また、上記の.NET標準ライブラリを参照する非常にシンプルな.NET Frameworkコンソールアプリケーションであり、次のプロジェクトファイルとして記述されています。
_<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net45</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>
</Project>
_
コンソールアプリケーションをビルドすると、次のビルドエラーが発生します。
C:\Program Files\dotnet\sdk\1.0.4\NuGet.targets(97,5): error : Project Common is not compatible with net45 (.NETFramework,Version=v4.5). Project Common supports: netstandard1.6 (.NETStandard,Version=v1.6)
この質問 を見て、そこで提供された提案をいくつか試しましたが、どれも機能しませんでした。したがって、これは別の問題のようです。これは、ソリューションのビルド中に発生し、NuGetパッケージを(明示的に)参照することはありません。
最後に、それが役立つ場合、ここでこの問題を実証するソリューションがあります: https://github.com/Mike-EEE/Stash/blob/master/VS2017.Multi/VS2017.dotNetFramework.sln
.NET Framework 4.5は、.NET Standard 1.0または1.1を対象とする.net標準ライブラリの使用のみをサポートしています。ライブラリは1.6を対象としているため、ツールはここで正しいことを行い、エラーを出力します(ライブラリは.NET Framework 4.5では利用できないAPIを使用する可能性があるため)。ライブラリをNuGetパッケージとして公開し、パッケージ参照を介して使用すると、パッケージの復元もエラーになります(パッケージに互換性がないというエラーが表示されます)。
これらのバージョンを変更するプレビューツール(「2.0」)があるため、.NET Frameworkバージョンがどの.NET Standardバージョンをサポートするかについて、いくつかの混乱があります。 ドキュメントの「.NETプラットフォームサポート」表 には、サポートされているバージョンに関する2行が含まれています。ただし、どちらのバージョンでも、.NET Framework 4.5は.NET Standard 1.1に制限されています。
.netフレームワークプロジェクトが.net標準ライブラリと互換性を持つためには、NETStandard.Library
nugetから。
今、私はこれが絶対に必要な理由を正確に述べている公式のリソースを見つけることができませんが、私はNETStandard.Library
には、.NET標準APIから.NET Frameworkへのマップを作成するために必要なリンクがあります。
詳細情報が必要な場合は、 NET Standard の公式ドキュメントを読むことをお勧めします。