【问题标题】:Force download of specific nuget package to local packages folder强制将特定 nuget 包下载到本地包文件夹
【发布时间】:2019-07-13 03:59:07
【问题描述】:

我有一个引用 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。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢,是的,我之前尝试过,它确实会下载所有包,但我宁愿将其中的绝大多数保存在全局缓存中。我想知道我是否可以指示 nuget 仅将单个包下载到本地包文件夹。
    • @christok,是的,请查看更新答案以获取一些详细信息。
    • @christok,刚刚检查提供的信息是否有帮助。如果您需要进一步的帮助,请告诉我们。
    • 这对我不起作用。它将所有包下载到 .\packages 文件夹。正如问题的标题所暗示的那样,我希望能够从解决方案的包文件夹中添加特定的包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2020-11-30
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多