2012-04-03 15 views
3

NuGet Package Restore NuGetとソースコントロール(私の場合はTFS)を組み合わせる正しい方法と思われます。たとえばthis answer最初のコメントはthis closed questionです。 NuGet Package Restoreは、ソース管理からフェッチされ、別のdev 'マシン上に構築されたソリューションが、必要なNuGetパッケージを自動的にフェッチすることを可能にします。NuGetパッケージの復元*なし* NuGet.targets MsBuildタスクをインポートするソリューション内のすべてのプロジェクトを変更

NuGet Package Restoreをソリューションに追加するには、ソリューションを右クリックし、NuGet Package Restoreを有効にします。 NuGet.exeとMsBuildファイルを含む.nugetという名前のソリューションフォルダが追加され、ソリューションのすべてのプロジェクトがNuGet.targets MsBuildタスクをインポートするように変更されました。 (http://docs.nuget.org/docs/Workflows/Using-NuGet-without-committing-packagesからの引用)。しかし、私が取り組んでいるソリューションのプロジェクトの中にはユーティリティプロジェクトがあり、さまざまなソリューション間やさまざまな開発者間で共有されています。ではなく、はNuGetによって処理される参照が必要です。

NuGetパッケージのリストアを有効にするにはどうしたらいいですか?NuGetビルドタスクの設定からソリューション内の特定のプロジェクトを排除するにはどうすればよいですか?

答えて

4

現在、NuGet Package Restoreにはいくつかの制限があり、特定のプロジェクトに限定することはできません。 これが可能になるだろう、既存のNuGetの作業項目があります: #1812 - Enable Package Restore - Selective Projects

は、それが現在のバックログですので、優先順位をバンプすることで/投票コメントしてください。

注:表面で、.csprojファイルはNuGetパッケージの復元オフにサポートするためのプロパティを持っているように見えますが、原因別の問題に、それは背中に回し続ける:NuGet command line forces package restore

+0

1:私のbuildserverで

私はこの(シェル)スニペットを使用しています。有益な答えをありがとう。 – dumbledad

+0

Alexandre、私は、その作業項目から、ソリューションでNuGet Package Restoreを実行し、以前のバージョンに変更したくないプロジェクトを手作業で元に戻すことが一方通行であることに気付きました。これは良い回避策ですか? – dumbledad

+1

私は応答で追加したメモのために、これが現時点ではうまくいかないと思います。特に[この問題](http://nuget.codeplex.com/workitem/1998)、NuGetの初期化時にEnablePackageRestoreが呼び出されるため、プロジェクトごとにリストアを切り替える必要があります。 –

1

あなたがからスクリプトを実行することができますすべてのpackages.configファイルを処理してその内容をダウンロードする最初のプロジェクトのPreBuildステップ。あなたは、溶液中のすべてのpackages.configのためにあなたの$(SolutionDir)から

.nuget/nuget.exe install "....\packages.config" -o "packages" 

を呼び出す必要があります。

これは実際には標準ソリューションよりも優れています。これは、プロジェクトにインストールされていないソリューションレベルのパッケージもダウンロードされるためです。投票の提案のために

find -iname packages.config -print0 | xargs -0 -ti mono --runtime=v4.0.30319 .nuget/nuget.exe install {} -o "packages" 
関連する問題