3

プロジェクトのルートフォルダーにnuget.configファイルを配置しました。このファイルは、すべてのソリューションですべてのNuGetパッケージを配置する場所を指定しています。

ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="D:\Projects\Development\NuGet Packages" />
  </config>
</configuration>

また、すべてのソリューションでNuGetパッケージの復元を有効にしました。

これを最初に設定したとき、nuget.configファイルは無視されていました。すべてのNuGetパッケージは、ソリューションフォルダーの「packages」フォルダーに配置されていました。このフォルダーを何度も削除しようとしましたが、常にNuGetで再作成され、パッケージで埋められていました。

多くの試行錯誤の末、<PackagesDir>「NuGet.targets」の要素に出くわし、コメントアウトすると、最終的にパッケージをプロジェクトルートの正しいフォルダーに配置できることに気付きました。

これがNuGet.targetsからの関連行です

<PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>

私の質問は、NuGet.targetsファイルのPackagesDir要素をコメントアウトすることが、nuget.configファイルを追跡するための意図された方法なのか、それとももっと明白な解決策がないのかということです。

4

1 に答える 1

3

あなたの質問には2つのことが関係しています。

  • NuGetはパッケージをどこに保存しますか?
  • 開いているプロジェクト/ソリューションのNuGetパッケージの復元

1つ目については、nuget.configファイルにrepositoryPathキーを設定することが、デフォルトとは異なるフォルダーにパッケージを抽出するようにNuGetに指示する正しいアプローチです。この設定は、開発者がプロ​​ジェクトにパッケージ参照を追加するたびに使用されます。

NuGetパッケージの復元の場合、この設定はNuGet.targetsで見つけた設定によって上書きされます。この設定は、ソリューションのビルド時にパッケージを復元するときに使用されます。

パッケージの復元カスタムパスを使用する場合は、実際に両方を指定する必要があります。1つ目は開発者用、2つ目はパッケージの復元用です。

于 2012-12-31T09:59:22.880 に答える