2017-07-18 11 views
0

私は2つのプロジェクトを含むソリューションを提供しています。Nugetはソリューション内のパッケージフォルダの生成を防ぎます

/Solution 
    .sln 
    .nuget.config 
    /ProjectA 
     .csproj 
     .nuspec 
    /ProejctB 
     .csproj 
     .nuspec 

Nuget経由でProjectAを追加するとどうなりますか?基本的には、Visual Studioがpackages.configファイルを作成し、そこに依存関係を置く

/Solution 
    .sln 
    nuget.config 
    /packages 
     .nupkg 
     /lib 
      .dll 
    /ProjectA 
     .csproj 
     .nuspec 
     packages.config 
    /ProejctB 
     .csproj 
     .nuspec 

enter image description here

プロジェクト構造はこのようなものになっています。そして、依存関係は/packagesフォルダに追加されます。また、.csprojの内容が変更されました。(/packagesフォルダ内のdllへの相対パスを持つ参照が追加されました)

私は2つの質問があります。

1- nuget.configファイルの内側に次の行を追加しました。だから私は、ソリューションで/packagesフォルダを作成する代わりに、デフォルトのローカルリポジトリを使用すると思います。ソリューションで/ packagesフォルダを作成しないようにするにはどうしたらいいですか?代わりに"%userprofile%\.nuget\packages"を使用したいと思います。

<add key="globalPackagesFolder" value="%userprofile%\.nuget\packages" /> 

2-依存性をnugetパッケージとして追加するとき。まだ.csprjファイルが変更され、dllの関連パスが相対パスの参照としてそこに追加されます。大丈夫ですか?自動生成されませんpackages.config。なぜこのファイルも更新されます。

+0

ソリューション内にパッケージフォルダがあるのはなぜ重要ですか? – FrankerZ

+0

各ソリューションにパッケージフォルダを用意する代わりに、システムに1つのパッケージフォルダを置き、各ソリューションがこのフォルダを使用する方がよいと思います。 "%userprofile%\。nuget \ packages"はすでに存在していますので、使用したいと思います。 – wasabi

+0

パッケージマネージャはローカルキャッシュを使用します。それはdllを各ディレクトリにコピーします(異なったプロジェクトが異なるバージョンを参照するかもしれないので) – FrankerZ

答えて

2

1- nuget.configファイルの中に次の行を追加しました。ですから、nugetは/ packagesフォルダを作成するのではなく、デフォルトのローカルリポジトリを使用します。ソリューションで/ packagesフォルダを作成しないようにするにはどうしたらいいですか?代わりに "%userprofile%.nuget \ packages"を使いたいと思います。

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

あなたはパッケージが「%userprofile%\.nuget\packages」フォルダに追加され、スクリーンショットの下からテスト結果を確認することができます:

あなたは NuGet.Configの設定の下に使用する必要があります

enter image description here

注::大文字と小文字の区別に注意してくださいファイル名をにしてからVSを再起動してください。

2-依存性をnugetパッケージとして追加するとき。それでもなお.csprjファイルが に変更され、dllの関連パスが参考パスとして 相対パスで追加されています。大丈夫ですか?自動生成されたpackages.configは十分ではありません。 なぜこのファイルも更新されています。

ない、.csprojファイル内Package.configとHintPathが異なる役割を持っているので。 Package.configはNuGetによってパッケージを管理するために使用され、.csprojのHintPathはVisual Studioの参照でDllファイルのパスが使用されます。両方のファイルを更新する必要があります。そうしないと、Visual Studioは「参照が見つかりません...」というエラーをスローします。

関連する問題