web-dev-qa-db-ja.com

ソリューションの2番目のプロジェクトにNuGetパッケージをインストールするにはどうすればよいですか?

現在、最初は1つのプロジェクト(My.First.Project.Name)を含むソリューションに取り組んでいます。以下を実行してCastle Windsorをインストールしました。

Install-Package Castle.Windsor

ソリューションに別のプロジェクト(My.Second.Project.Name)を追加し、Castle Windsorをこのプロジェクトにインストールしたいのですが、Install-Package Castle.Windsorを再度実行すると、エラーが発生します。

「Castle.Core 2.5.2」はすでにインストールされています
「Castle.Windsor 2.5.2」はすでにインストールされています
My.First.Project.Nameにはすでに「Castle.Core 2.5.2」への参照があります
My.First.Project.Nameにはすでに「Castle.Windsor 2.5.2」への参照があります

だから私の質問は:NuGetパッケージマネージャーを説得して、パッケージを2番目のプロジェクトにインストールする方法です

189
Rob

3つのアプローチがあります:)。
NuGet 1.1(最新リリース)では、Powershellパイプラインが改善されたため、次のことが可能になりました。

Get-Project -All | Install-Package SomePackage

これにより、すべてのプロジェクトに「SomePackage」がインストールされます。ワイルドカードを使用して、プロジェクトを絞り込むことができます。

Get-Project Mvc* | Install-Package SomePackage

ワイルドカードセマンティクスを使用します(この場合、mvcで始まるすべてのプロジェクトを見つけます)。

Get-Project SomeProject | Install-Package SomePackage

これにより、SomePackageがSomeProjectにインストールされ、それ以外は何もインストールされません。

318
davidfowl

2つのアプローチがあります。

既に学んだように、パッケージマネージャーコンソールには、ソリューション内のプロジェクトを一覧表示するドロップダウンがあります。

もう1つの方法は、-Projectフラグを使用することです。それについての良いところは、プロジェクト名とともにIntellisenseを提供することです!例えば:

Install-Package SomePackage -Project MvcApplication2
139
Haacked

答えは、恥ずかしいほど、盲目的に単純です。

「パッケージマネージャーコンソール」のツールバーには「デフォルトプロジェクト」というタイトルのドロップダウンがあり、そこでプロジェクトをMy.Second.Project.Nameに変更すると、Install-Package Castle.Windsorが2番目のプロジェクトにパッケージをインストールできます。

82
Rob

Visual Studio 2015(Nuget v3.1.2以降)の構文は次のとおりです。

Install-Package ThePackage -ProjectName YourProjectName

注:-Project Name vs -Project

13
Tom Studee

Visual Studioでは、Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solutionにアクセスできます。そこから、プロジェクト間で共有するNugetパッケージを選択し、Manageをクリックします。これにより、特定のインストール済みNuGetパッケージを他のプロジェクトに追加できます。

8
SaiyanGirl

既存のプロジェクトから新しいプロジェクトにパッケージをコピーする必要がある場合は、packages.configファイルを新しいプロジェクトにコピーまたは変更して、Update-Package -reinstall -Project YourProjectNameを実行します。

6
AdvanTiSS

再インストールを強制するオプションもあります。いくつかの問題があるので、これは助けになりました。

Update-Package Microsoft.Owin -Reinstall
0
Damian Vogel