visual-studio - NuGet 包安装到错误的文件夹

标签 visual-studio xamarin.forms nuget visual-studio-2017 nuget-package

我正在 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 文件夹的根级别添加了包文件夹。我每个解决方案都有一个 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 中,当我右键单击解决方案时,单击“管理解决方案的 NuGet 包...”,然后安装包(例如 Newtonsoft.Json),我希望它会将这些包文件安装在我的 MobileApp/packages/ 文件夹中,该位置是我在解决方案的 nuget.config 中设置的位置。但事实并非如此。相反,这些文件将被放入全局 NuGet 包位置,即 %USERPROFILE%\.nuget\packages

为什么?我的 nuget.config 文件不应该覆盖它吗?我已经验证,当我转到“程序包管理器设置”时,CustomPackagesLocation 的位置是正确的,但显然repositoryPath 设置似乎没有任何影响。

我还注意到,在 project.json.lockProject.nuget.targets 文件中,包文件夹设置为全局 NuGet 包位置(%USERPROFILE%/.nuget/packages 一)。为什么?它从哪里提取这个值?

最佳答案

Why? Where is it pulling this value from??

Project.json 文件的默认包目录是 %USERPROFILE%/.nuget/packages 并且 project.json 项目现在不支持repositoryPath 配置。这就是为什么您更改了repositoryPath,但NuGet仍然将包放入全局NuGet包位置的原因。您可以引用same issue在 GitHub 上。

如果要更改 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>

参见NuGet.Config reference有关配置部分的详细信息。

关于visual-studio - NuGet 包安装到错误的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618098/

相关文章:

visual-studio - VS 2012 IIS Express 8 - 无法启动 IIS Express Web 服务器

c# - Xamarin.Forms(Android)蓝牙间歇性工作

android - Xamarin - 项目未加载或仅从 'Resources' 文件夹中丢失

mvvm - 在 FreshMvvm 中监听 ItemTapped 事件

c++ - 在 Debug模式下执行控制台应用程序后,如何让 Visual Studio 暂停?

visual-studio - 一次更新解决方案中所有项目的引用路径

c# - 管理项目中 Entity Framework 的包管理器控制台命令

installation - Umbraco 7.5.4 安装错误 : Invalid Objectname CmsContent

.net - 你如何启用 "Enable .NET Framework source stepping"?

c# - 在 Travis CI 上使用 Mono 5.14.0.177、msbuild 15.0、nuget 4.7.1 构建失败,但在 VirtualBox 中无法重现