首页 文章

NuGet包安装到错误的文件夹

提问于
浏览
2

我正在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中右键单击解决方案时,单击"Manage NuGet Packages For Solution...",然后安装包(例如Newtonsoft.Json), I would expect that it would install those package files inside my MobileApp/packages/ folder, the location I set in the solution's nuget.config. But it doesn't. Instead the files are getting put into the global NuGet packages location, which is %USERPROFILE%.nuget\packages.

为什么?我的nuget.config文件不应该覆盖它吗?我已经验证当我转到Package Manager Settings时,CustomPackagesLocation的位置是正确的,但显然repositoryPath设置似乎不会影响任何内容 .

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

1 回答

  • 1

    为什么?它从哪里拉出这个值?

    Project.json文件的默认包目录是 %USERPROFILE%/.nuget/packagesproject.json project现在不支持repositoryPath配置 . 这就是您更改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>
    

    有关配置部分的详细信息,请参阅NuGet.Config reference .

相关问题