1. ホーム
  2. .net

[解決済み】NuGetのパッケージの場所を変更することは可能ですか?

2022-04-15 06:56:15

質問

私は、ほとんどのプロジェクトで次のような規約を設けています。

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe

していることに気づくだろう。 ではなく 外部ライブラリの保持 内部 を指定します。また、NuGetを使用することに非常に興味がありますが、これらの外部ライブラリがソースフォルダ内にあるのは困ります。NuGetには、すべてのパッケージがロードされるディレクトリを変更する設定がありますか?

解決方法は?

パッケージがどのフォルダにインストールされるかを制御できるようになりました。

http://nuget.codeplex.com/workitem/215

編集する Dec 10 2010 at 11:45 PM の Phil Haack のコメント (ワークアイテム/上記リンク内) を参照してください。このサポートは1.0で部分的に実装されていますが、文書化されていません。

dfowlerさん曰く。 これでソリューションの横にnuget.configファイルを追加してください。

<settings>
<repositoryPath>{some path here}</repositoryPath>
</settings>

があります。 nuget パッケージ パッケージフォルダのオーバーライドを作成するためのものです。

バージョン2.1へのアップデート

Azat さんのコメントにあるように、パッケージの場所を制御する方法についての公式文書ができました。その 2.1リリースノート は、nuget.config ファイルに以下の設定を指定します (設定ファイルを置く有効な場所と、階層的な設定モデルの仕組みについては、リリースノートを参照してください)。

<configuration>
  <config>
    <add key="repositoryPath" value="C:\thePathToMyPackagesFolder" />
  </config>
  ... 
</configuration>

これにより、ファイルを置いた設定レベルのパッケージフォルダが変更されます(ソリューションディレクトリに置いた場合はソリューション、プロジェクトディレクトリに置いた場合はプロジェクト、といった具合に)。なお、リリースノートにはこう書かれています。

[...] もし、ソリューションの下に既存のpackagesフォルダがある場合は、そのフォルダを削除してください。 ルートにパッケージを配置する前に、それを削除する必要があります。 新しい場所