2017-10-03 41 views
1

私は.NETのコア.NETフレームワークアプリケーション間の.NET標準の2 nugetパッケージを共有する方法を少し混乱です。例えば、.net-standard 2.0パッケージを作成したのは<TargetFramework>netstandard2.0</TargetFramework>です。だから私は../libs/netstandard2.0フォルダがパッケージに入っています。 .net-framework 4.6.1にそのままインストールできますか?アプリケーション(compatibility matrixによると)できますか?または、このパッケージをマルチターゲット<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>にする必要がありますか?ここでどんな利点がありますか?古典的な.NET 4.6.1アプリケーションで.NET Standard 2.0パッケージを使用できますか?

答えて

2

はい、確かです。 .NET Framework 2.0のパッケージは、.NET Framework 4.6.1プロジェクトから参照できます(フレームワークのバージョンを下げると.NET Standard 2.0では機能しません)。別のターゲットやリビルドを行う必要はありません。

Referencing .NET Standard Assemblies from both .NET Core and .NET Frameworkも読んでください。

マルチターゲティングを使用する利点について:必要がない限り、何もありません。そのような場合はどうなりますか? the documentationによると:

プロジェクトが.NET Frameworkと.NET Coreの両方をサポートしている場合、以前のバージョンの.NET Frameworkを対象にする必要があります。このシナリオでは、新しいターゲットに新しいAPIと言語構成を使用する場合は、コードに#if指示文を使用します。ターゲットとするプラットフォームごとに異なるパッケージや依存関係を追加して、それぞれのケースに必要なさまざまなAPIを組み込む必要があります。

コードや参照に互換性がない場合は、本当に必要になります。そのような問題がなければ、マルチターゲティングは必要ありません。

<ItemGroup Condition="'$(TargetFramework)' == 'net40'"> 
    <Reference Include="System.Net" /> 
</ItemGroup> 
:いくつかの洞察を与えるかもしれないビルドターゲットに基づいて、参照を含める方法を与えられたサンプルがあり

関連する問題