web-dev-qa-db-ja.com

VS2012でプロジェクト参照としてNuGetパッケージを追加する最良の方法は?

OK。本当に簡単な質問ですが、私はたぶん太っています。

プロジェクトの「references」フォルダーを右クリックして「Manage NuGet Packages」を選択すると、パッケージをインストールでき、クリックしたプロジェクトによって自動的に参照されます。しかし、同じソリューション内の他のプロジェクトに同じ参照を追加したいと思います。前の手順を繰り返して別のプロジェクトをクリックすると、パッケージがアンインストールされます(既にインストールされているため)。既存の(インストール済みの)NuGetパッケージをプロジェクト参照として追加する適切な方法は何ですか?通常のダイアログを使用して参照を追加し、パッケージフォルダのdllに「参照」しますか?ある方法を使用して最初の参照を追加し、その後別の方法で別の参照を追加しますか?それは正しくないようです。

59
Nine Tails

Manage NuGet packages for Solution...は次の方法で使用できます。

  • ソリューションを右クリック
  • Tools > Library Package Manager > Manage NuGet packages for Solution

次に、以下のスクリーンショットのように、パッケージをインストールするプロジェクトを選択できます。 enter image description here さらに、同じManage NuGet packages for Solution...を使用して、インストールされたパッケージをソリューション内の別のプロジェクトに追加できます。 enter image description here

84
Pavel Bakshy

ここでの他の答えは私を助けませんでした。これが私がやったことです、私はそれを行う他の方法を知りません。 VS 2013を使用しています。

  • パッケージマネージャーコンソールにパッケージをインストールしました。 PM> Install-Package Newtonsoft.Json
  • ソリューションエクスプローラーで、参照を右クリックし、[参照の追加]を選択します
  • [参照]をクリックし、ソリューションのフォルダーの下にあるパッケージディレクトリのdllに移動します。

これにより、プロジェクトへの参照の相対パスが追加されるため、ソース管理から別のディレクトリにコードを取得する他のユーザーと連携する必要があります。

19
kristianp

同じ問題がありました。 kristianpによって投稿されたソリューションは期待どおりに機能しましたが、多くのパッケージを扱う場合は少し面倒な場合があります。私のために働いた解決策は、メモ帳でmyProjectName.csprojファイルを編集し、次のように別のプロジェクトから参照をコピーして貼り付けるだけでした:

...

<ItemGroup>
    <Reference Include="Microsoft.AspNet.SignalR.Core">
      <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.1.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.SignalR.SystemWeb">
      <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
    </Reference>

    ...

これが誰かを助けることを願っています。それは私に多くのクリックを保存しました:)

1
Jan W

最近ではPackage Manager Console(View-> Other Windows-> Package Manager Console)を使用しています。

必要なのは、次の2つのコマンドだけです。

install-package <package-name> [-version <version-number>] [-project <project-name]

そして

update-package <package-name> [-reinstall] [-version <version-number>] [-project <project-name>]

どこ

  • 角括弧[]内の部分はオプションです。
  • 'install-package'は指定されたプロジェクトにインストールされます。指定されていない場合は、コマンドウィンドウの上部にある[既定のプロジェクト]ドロップダウンで選択されたプロジェクトがインストールされます。
  • 「update-package」は、プロジェクトが指定されていない限り、すべてのプロジェクトに変更を適用します。
  • 「-reinstall」は、アンインストールしてから同じバージョン番号でパッケージを再度インストールすることを意味します。

最初は、これらのコマンドの動作は少しおかしいと思っていましたが、経験上、これらのコマンドはこのように最も有用であることがわかります。個人的には「デフォルトプロジェクト」ドロップダウンを完全に捨てます。

0
Nine Tails