强制将特定的nuget程序包下载到本地程序包文件夹

时间:2019-02-19 15:30:18

标签: visual-studio .net-core nuget dotnet-restore

我有一个引用Json.Net 12.0.1的.NET Core Visual Studio 2017解决方案。在我的开发环境中,一切都很好。当我运行dotnet restore时,Json.Net将下载到解决方案包文件夹中的Newtonsoft.Json.12.0.1。

但是,当我在构建服务器上运行restore时,该解决方案希望从nuget全局缓存中获取Json.Net的版本。

我可以强制将所有程序包下载到本地程序包文件夹,但这最终会使用不同的命名约定(Newtonsoft.Json / 12.0.1),并且当然还是要重新下载全局变量中存在的所有内容。因此,这只会产生大量开销,但仍然无法正常工作。

我想我可以在oder的.csproj文件中工作一些轨迹,为Json.Net提供不同的提示路径,但这似乎过于复杂。

是否可以强制Nuget将Json.net(或任何软件包)下载到本地软件包中的特定文件夹,或者使用CLI工具解决此问题?

同样,这是.NET Core,所以没有package.config。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

是否可以强制Nuget将Json.net(或任何软件包)下载到本地软件包中的特定文件夹,或者使用CLI工具解决此问题?

是的,您可以在解决方案旁边放置一个NuGet.Config文件,其内容如下:

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

然后重新启动Visual Studio,然后重新打开该解决方案,然后右键单击该解决方案,选择“还原NuGet程序包”。所有软件包都存储在项目存储库中。

  

我想知道我是否只能指导nuget下载单个软件包   到本地包文件夹。

是的,您可以使用以下命令行下载nuget软件包:

nuget.exe install YourPackageName -source "https://api.nuget.org/v3/index.json" -OutputDirectory "D:\Test"

希望这会有所帮助。