2

私はパッケージ管理のためにproject.jsonを使用してVisual Studio 2017のXamarin.Forms PCLモバイルアプリケーションで作業しています(私はPackageReferenceを使用していません。私たちのチームの中にはまだVisual Studio 2015を使用しています)。私は、ソリューション内の複数のプロジェクトを持っている、と私はそうのように、プロジェクトの複数の支店を持っていますので、単一の場所からパッケージを参照できるようにするには、私はすべての私の(プロジェクト/ソリューション/枝を)したいNuGetパッケージが間違ったフォルダにインストールされています

MobileApp/ 
    packages/ <<--- (I want nuget packages to be installed here) 
    Branches/ 
     DevBranchSolution/ 
      MobileApp.sln 
      nuget.config 
      ProjectA/ 
      ProjectB/ 

MobileAppフォルダのルートレベルにパッケージフォルダを追加したことに気付くでしょう。私のようなものに見えるソリューションあたりnuget.configファイルを持っている:

nuget.config:私は「をクリックし、ソリューションを右クリックしてソリューションのNuGetパッケージの管理Visual Studioで

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
     <add key="repositoryPath" value="..\..\packages" /> 
    </config> 
    <packageSources> 
     <clear /> 
     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> 
     <add key="CustomPackagesLocation" value="..\..\packages" /> 
    </packageSources> 
    <disabledPackageSources /> 
</configuration> 

... "、パッケージをインストールしてください(例:Newtonsoft.Json)私のMobileApp/packages/フォルダにソリューションファイルのnuget.configで設定した場所にパッケージファイルがインストールされると思います。しかし、それはしません。代わりに、ファイルはグローバルNuGetパッケージの場所に入れられます。これは%USERPROFILE%\.nuget\packagesです。

なぜですか?私のnuget.configファイルはそれを上書きしてはいけませんか?私は、Package Managerの設定に行くと、CustomPackagesLocationの場所は正しいが、repositoryPathの設定が何かに影響を与えていないように見えることを確認した。

project.json.lockProject.nuget.targetsファイルの中に、パッケージフォルダがグローバルNuGetパッケージの場所(%USERPROFILE%/.nuget/packages)に設定されていることにも気付きました。どうして?この値はどこから引っ張っていますか?

+0

プロジェクトでPackageReferencesを使用していますか? –

+0

私は残念ながら、私たちのチームがVS2015にいるわけではないので、私はVS2017を必要条件にしたくありませんでした。私はproject.jsonを使用しています。 – jbyrd

+0

これを試してみてください:https://stackoverflow.com/questions/7676640/how-do-i-specify-the-directory-where-nuget-packages-are-installed またはhttps:// stackoverflow。 com/questions/4092759/nigetのパッケージの場所を変更することが可能です – BikerDude

答えて

1

なぜですか?この値はどこから引っ張っていますか?

Project.jsonファイルのデフォルトのパッケージのディレクトリは現在、リポジトの設定をサポートしていない%USERPROFILE%/.nuget/packagesproject.jsonプロジェクトです。これがrepositoryPathを変更した理由ですが、NuGetはパッケージをグローバルNuGetパッケージの場所に配置します。 GitHubのsame issueを参照できます。

パッケージのデフォルトの場所をproject.jsonに変更する場合は、環境変数「NUGET_PACKAGES」を設定できます。ちょうど "NUGET_PACKAGES" = ".... \ packages"を設定してください。それとも、次の次の内容の解決にNuGet.Configファイルを配置することができます

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

はconfigセクションの詳細についてはNuGet.Config referenceを参照してください。

+0

ありがとう!はい、これは@MattWardのヒントの後で私が発見したものです。この単純な事実(私はpackages.configプロジェクトのみがrepositoryPathを使用し、他はglobalPackagesFolderを使用する)を永遠に探しました。おそらく私がnuget.configドキュメントを少し慎重に読んだら、気づいたでしょう。それらの事実は括弧で囲まれ、奇妙な形になっていました。薄いテーブルの列の中にあったので、3行にバンプしてスキップしやすくなりました。 – jbyrd

関連する問題