2018年8月1日水曜日

Nugetのpacagesフォルダを統合してディスク容量を節約


Nugetのpacagesフォルダは移動可能で、複数のソリューションで共有することができます。pacagesフォルダを移動する方法は次の2つの方法があります。移動した場合はパッケージの再インストールが必要になります。


ソリューションファイル(.sln)の位置を合わせる

Nugetのpacagesフォルダはソリューションファイル(.sln)と同じ階層に作られるため、複数のソリューションファイルを同じ階層においておけば、Nugetのpacagesフォルダは1か所にまとまります。



NuGet.configファイル で Nugetのpacagesフォルダの場所を指定する

NuGet.configファイルのrepositoryPathでNugetのpacagesフォルダのパスを指定できます。指定しておけば、そのパスにNugetのpacagesフォルダが作られます。NuGet.config ファイルは、ソリューションファイル(.sln)と同じもしくは、上の階層にあればOKです。(ドライブのルートまで再帰的に検索されるそうです。)

NuGet.configファイルの例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value=".\packages" />
  </config>
</configuration>

注意

複数人で作業している場合、それぞれにNuGet.configを指定するとプロジェクトファイル(csproj )のHintPathなどのパスが人によって変わることになりGitで管理しにくくなります。


パッケージの再インストール

pacagesフォルダの位置を変更しても、リビルドなどでは参照の設定が変わらないため、パッケージを再インストールする必要があります。
パッケージマネージャーコンソールを開いて、次のコマンドを実行します。

Update-Package -Reinstall

このコマンドを実行することで、プロジェクトファイル(csproj )のHintPathが正しいパスに書き換えられ参照設定が正しくなります。

ただし、一部のパッケージはプロジェクトファイル(csproj )にHintPath以外のパス情報を持っている場合があり、それらがエラーになることがあります。Nugetのpacagesフォルダを移動させてビルドができなくなったプロジェクトがあれば、プロジェクトファイル(csproj )で、移動前のpacagesが指定されている箇所がないか検索してみてください。


参考

複数のソリューション間で NuGet のリポジトリを共有する - しばやん雑記

0 件のコメント:

コメントを投稿