2017-09-20 18 views
11

私のソリューションに.NET Standard 2.0プロジェクトがあり、IConfigurationインターフェイスを使用しています。名前を書くときは、Microsoft.Extensions.Configuration.Abstractions.dllを参照することをお勧めします。私はそれを行うと、参照ノードの下に追加されます。しかし、NuGetパッケージとして追加することもできます。どちらの方法もうまくいくようです。私は、プロジェクトで参照されている.NET Standard SDKを介して、参照VSが示唆していると仮定します。dllへの参照と.NET標準プロジェクトでのNuGetパッケージの追加

この参照を追加するには、どのような方法が適していますか?それぞれのアプローチの利点と欠点は何ですか?

+0

私は確かではないが、私はあなたのプロジェクトへの参照を自動的に追加してくれると思うので、答えは出ていない.Nugetリポジトリに新しいバージョンがあれば、パッケージを更新できるので、 – tym32167

+0

どこからdllリファレンスを取得しますか?それは.net標準プロジェクトで使用されるナゲットパッケージでなければなりません.. –

+0

また、直接的な答えは出さないが、 などのいくつかのものがある。Nugetはソリューション全体のリストアを行う 2.ナゲット経由で追加すると、参照の参照と同じdllが追加される 3.特定のバージョン 4. Continues Integration/Build Serverの間にNuget から直接プルします。5.カスタムナゲットフィードを使用している場合は、自分のフィードから更新/復元できます。 –

答えて

5

手動でダウンロードされた、または既知の場所にインストールされたNuGetパッケージからDLLを直接参照すると、リストアとビルドの処理が高速化されますが、危険性はわずかです。

NuGetパッケージは、DLLファイルでは参照できないことが多くあります。パッケージからDLLを参照する場合は、パッケージが以下のいずれかの/ accountを実行していないことを確認してください。

  • 追加のNuGetパッケージは依存関係として取り込むことができます。 DLLを新しいパッケージからアップグレードする場合は、依存関係が変更されているかどうかを確認し、それに応じてプロジェクトを更新する必要があります。
  • NuGetパッケージは、さまざまな参照アセンブリと実装アセンブリを提供できます。 NuGetパッケージは、ref/フォルダに「APIサーフェス」DLLを作成し、.NET Framework .NET Core、Xamarinなどのさまざまな実装アセンブリをそのlib/に含めることができます。フォルダ。プロジェクトタイプの参照に正しいDLLファイルを選択するように注意する必要があります。.NET標準ライブラリでは、参照アセンブリを参照する必要があります(たとえば、コンパイル時にref/netstandard1.4/foo.dll)。このライブラリを使用する.NET Frameworkアプリケーションは、アセンブリの例:lib/net452/foo.dll
  • NuGetパッケージには、ランタイム仕様やターゲットフレームワーク固有のコンテンツが追加されている場合があります。ネイティブライブラリ(Windowsでは.dll、Linuxでは.soなど) - from runtime/サブフォルダ)または任意のコンテンツファイルNuGetを使用せずにこの権利を取得することは難しく、.nuspecファイルでコンテンツファイルのビルドアクションを定義することもできます。
  • ビルドロジックはNuGetパッケージビルド時に特定のプロパティを設定したり、ターゲットを実行したりして、製品を正しく使用するために必要です。これは、正しい方法で.cspojファイルを編集することなく手動で行うことは不可能です。

NuGetパッケージで上記(手動で確認する必要がある)を使用しない場合は、代わりにDLLを参照するのが一般的です。しかし、DLLとその依存関係を更新することは多くの作業であり、NuGetを使用する方が簡単です。

さらに、.NET Coreツールのnugetフォールバックフォルダから直接参照することに言及しました。このフォルダには、インストールされているSDKのバージョンによっては、特定のバージョンのDLLがインストールされているとは限りません。また、別のマシン上の別の場所にインストールされている可能性もあります。 Windows以外のマシンでビルドする)。

+0

ありがとう、NuGetパッケージ自体を参照するのは明らかな方法です。私はこれを最初からやっていましたが、VSはこの修正を提案しました(dllを直接参照しています)ので、ツールを使って別の方法をとると間違っているかどうか疑問に思いました。 – Stilgar

関連する問題