6

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

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

我可以强制将所有包下载到本地包文件夹,但这最终会使用不同的命名约定(Newtonsoft.Json/12.0.1),并且当然会重新下载全局变量中存在的所有内容。所以它只会产生很多开销并且仍然不起作用。

我想我可以在我的 .csproj 文件中使用一些技巧,以便为 Json.Net 提供不同的提示路径,但这似乎过于复杂。

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

同样,这是 .NET Core,因此没有 packages.config。

谢谢!

4

1 回答 1

3

有没有办法强制 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"

希望这可以帮助。

于 2019-02-20T03:28:57.990 回答