我正在Visual Studio 2017中使用Xamarin.Forms PCL移动应用程序,使用project.json进行包管理(我没有使用PackageReference,因为Visual Studio 2017是必需的,有些是我们的团队仍在使用Visual Studio 2015)。我在解决方案中有多个项目,我有多个项目分支,如下所示:
MobileApp/
packages/ <<--- (I want nuget packages to be installed here)
Branches/
DevBranchSolution/
MobileApp.sln
nuget.config
ProjectA/
ProjectB/
我希望我的所有(项目/解决方案/分支机构)能够从一个位置引用软件包,因此您会注意到我已在MobileApp文件夹的根级别添加了packages文件夹。我有一个nuget.config文件,每个解决方案看起来像:
nuget.config:
<?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>
在Visual Studio中右键单击解决方案时,单击&#34;管理解决方案的NuGet包...&#34;,然后安装包(例如Newtonsoft.Json), 我希望它会将这些包文件安装在我的MobileApp/packages/
文件夹中,这是我在解决方案中设置的位置nuget.config。但它并没有。而是将文件放入全局NuGet包位置,即%USERPROFILE%\.nuget\packages
。
为什么呢?难道我的nuget.config文件不应该覆盖它吗?我已经确认,当我转到Package Manager Settings时,CustomPackagesLocation的位置是正确的,但显然repositoryPath设置似乎不会影响任何内容。
我还注意到,在project.json.lock
和Project.nuget.targets
文件中,package文件夹设置为全局NuGet包位置(%USERPROFILE%/.nuget/packages
一个)。为什么?它从哪里拉出这个值
答案 0 :(得分:3)
为什么呢?它从哪里拉出这个值
Project.json文件的默认包目录是%USERPROFILE%/.nuget/packages
,而project.json
项目现在不支持repositoryPath配置。这就是您更改repositoryPath的原因,但NuGet仍将包放入全局NuGet包位置。您可以参考GitHub上的same issue。
如果您想更改project.json
的套餐默认位置,您可以设置&#34; NUGET_PACKAGES&#34;环境变量。只需设置&#34; NUGET_PACKAGES&#34; =&#34; .... \ packages&#34;。或者,您可以在解决方案旁边放置一个NuGet.Config文件,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="globalPackagesFolder" value="..\..\packages" />
</config>
</configuration>
有关配置部分的详细信息,请参阅NuGet.Config reference。
答案 1 :(得分:0)
我有一个非常相似的问题,即它没有将packages文件夹用于类库。由于某种原因,我的csproj文件设置了一些程序集。我删除了这一行,并做了一个update-package -reinstall -project myclasslibrary,它再次正常工作。
我不确定是什么首先设置了HintPath。