6

すべてのプロジェクトが同じパッケージ フォルダーを参照できるように、すべての nuget パッケージがインストールされる 1 つの中心的な場所を指定するにはどうすればよいですか。

1 つのプロジェクトが削除された場合、参照は別のプロジェクトに依存しません。そのため、新しいバージョンのナゲットを単一のフォルダーで簡単に更新して、すべてで機能させることができます。

また、ソース管理のディスク容量も節約できます。

誰かが私に何か提案をしてもらえますか?

4

3 に答える 3

3

パッケージを別の場所に正しく復元するには、実際には 2 つの手順があります。Visual Studio を使用したと仮定すると (ソリューションを右クリック -> [パッケージの復元を有効にする]) 、ソリューションと同じディレクトリに.nugetディレクトリが作成されます。これを正しく行うには、2 つのファイルを編集する必要があります。

NuGet.Configを編集します。ドキュメント で指定されているように、リポジトリ パス設定を追加します。

<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositorypath" value="..\..\packages" />
  </config>
</configuration>

..\packages はデフォルトの動作を模倣します。パスはプロジェクト フォルダー(.nuget フォルダーではなく) に対する相対パスであるため、....\ はプロジェクト ファイルのディレクトリになります。

プロジェクトが本当にあちこちにある場合は、Nuget.configファイルをソース ツリーのルートに移動し、repositryPath代わりにその場所を基準にして構成することを検討してください。もちろん、フルパスも使用できますが、それは醜いです。

次に、復元コマンドからオプションを削除する必要がありsolutionDirます (どこでもこれを行うように指示されていません)。そのためには、NuGet.targetsを編集します。

要素を探して、引数RestoreCommandを削除してください。solutionDir

これから:<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>

これに:<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch)</RestoreCommand>

ファイルを生成した Visual Studio のバージョンによっては、実際の XML が私の例と異なる場合があります。そのオプションが削除されていることを確認し、他のすべてを同じままにしてください。

NB : パッケージ ディレクトリの場所を変更した (または別の名前に変更した) ため、プロジェクト参照を更新して新しい場所を指すようにする必要があります。相対パスが明らかに推奨されます。これを Visual Studio で手動で行う (面倒) か、.csproj/.vbproj ファイルを開いてHintPath参照用に検索/置換することができます。

于 2013-10-19T12:46:15.967 に答える
1

nuget.config ファイルを使用して、packages フォルダーを配置する (または名前を変更する) 場所を指定できます。

参照: NuGet 構成設定または「packages」フォルダーの場所を指定する

于 2013-08-28T10:32:51.303 に答える