web-dev-qa-db-ja.com

.nu​​getフォルダーをバージョン管理に追加する必要がありますか?

NuGetの新しいバージョンでは、packagesフォルダーをソースコードリポジトリに含める必要がないように、NuGetパッケージを自動的に復元するようにプロジェクトを構成できます。良い。

ただし、このコマンドは新しい.nugetフォルダーを追加し、NuGet.exeというバイナリがあります。これはVisual Studioによって自動的に再作成されることもあるため、バージョン管理に追加するのは適切ではありません。ただし、このフォルダーがないと、Visual Studioはソリューションを適切にロードしません。

どうやってこれに対処しますか?ソース管理に.nugetを追加しますか?ソリューションを開く前にコマンドラインスクリプトを実行しますか?

106
Borek Bernard

この投稿は古いため、ソリューションレベルのNuGetパッケージの復元は使用しないでください。バージョン2.7以降では、NuGetセットアップに、ビルド時にパッケージを自動的に復元するオプションがあります。そのため、.nugetフォルダーを削除し、プロジェクトからオプションを削除できます。

http://docs.nuget.org/docs/reference/package-restore

UPDATE:NuGet 4.xおよび.NET Standard 2.0のリリースでは、新しいcsproj形式を使用するときにパッケージ参照を使用できるようになり、皮肉なことにパッケージを復元するためのmsbuildへの依存関係。ただし、パッケージはmsbuildの最上級の市民です。上記のリンクでもPackageReferenceに言及していますが、次の発表で詳しく説明しています。

https://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html

そして、NuGet 4.x RTMアナウンスメント、これは皮肉なことにあまり有用ではありません:

https://blog.nuget.org/20170308/Announcing-NuGet-4.0-RTM.html

UPDATE 2:VS2017を使用すると、古典的なcsprojプロジェクトでパッケージ参照を使用することもできますが、後方互換性はなく、いくつかの問題がありますパッケージのサブ依存関係を復元します。私はそれがすべて解決されると確信しています。

47
Jeremy

@Richard Szalayの答えは正しい-nuget.exeをコミットする必要はありません。何らかの理由でVisual Studioがnuget.exeを自動的にダウンロードしない場合は、nuget.targetsファイルでtrueに次の設定があることを確認してください。

<!-- Download NuGet.exe if it does not already exist --> 
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

VSソリューションを閉じ、再度開いてビルドします。 Visual Studioは、nuget.exeを今すぐ自動的にダウンロードするはずです。

46
Gan

このスレッド によると、.nugetフォルダーはバージョン管理される必要があります。

22
Borek Bernard

コミットする必要がある.nuget\nuget.targets、 だがしかし nuget.exe。 nuget.targetsでDownloadNuGetExetrueに変更する限り、ターゲットは、exeが存在しない場合はダウンロードします

20
Richard Szalay

通常、exeをソース管理に追加するという考え方は好きではありませんが、プロジェクトを開いてビルドし、実行するために必要なものはすべてソース管理に含めることをお勧めします。

この場合、.nugetフォルダーは必須の依存関係のように思えます。したがって、ソース管理下にある必要があります。

調査する必要がある唯一の質問は、そのフォルダーが読み取り専用としてマークされている場合にNuGetがどのように反応するかです。TFSは、チェックイン後にこれを行います。


更新:NuGetを使用したことがないので、これについてもう少し研究しました。 http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html

おそらくあなたがしたいことは、NuGetをすべての開発者ワークステーションにインストールする必要がある要件にすることです。

さらに、ワークステーションでプロジェクトの編集を開始するために必要なバッチファイルをソース管理に配置する必要があります。バッチファイルは、依存関係パッケージの取得とインストールに必要なコマンドを実行します。

それを超えて、NuGetに直接連絡して、正確にこれがどのように機能するかを尋ねることをお勧めします。

4
NotMe

Nugetがパッケージの復元をサポートするようになったので、私たちはそれをより詳しく調べています。

ソース管理にはSubversionを使用しますが、私の最初の考えは.nugetはリポジトリに追加する必要がありますが、単一の場所を指すように svn:externals を使用して追加する必要があります。

そうすれば、すべての開発者とプロジェクトに新しいバージョンを自動的にプッシュできます。 HEADではなくリリースブランチ上のプロジェクトの場合、nugetをそのままにしておきたい場合は、svn:externals参照のリビジョンを指定できます。

私たちにはたくさんのプロジェクトがあるので、nuget.exeリポジトリで複数回。

1
si618

nuget.configファイルは、パッケージソース領域を使用して内部Nugetサーバーへの参照を持っているため、フォルダー内にあります。 https://docs.nuget.org/consume/nuget-config-settings

この理由とは別に、Visual Studioにパッケージのダウンロードを処理させる必要があります。

1
Karl Gjertsen