【问题标题】:force the redownload of a nuget package强制重新下载 nuget 包
【发布时间】:2016-05-18 20:19:46
【问题描述】:

这是我的场景:

在解决方案 A 中项目 A 中的 nuget 包 A 的开发过程中,我们经常需要在另一个项目中对其进行测试。出于这个原因,我们有一个包含未发布包 A 的开发 nuget 提要。在构建解决方案 A 时,它将自动推送到该开发提要。

为了测试,我们有一个包含多个项目的解决方案 B,所有项目都从该开发 nuget 提要中引用包 A。

每当我们重新构建解决方案 A(并且包 a 被推送到提要)时,我们都希望在测试期间在解决方案 B 的所有项目中使用包的新构建。

一旦包 A 实际发布,它将被推送到发布 nuget 提要,然后解决方案 B 应该从发布提要而不是开发提要中提取包。

这是我的两个问题:

强制将包 A 重新下载到解决方案 B 的包文件夹并使所有项目使用包的新版本的正确方法是什么即使包的版本没有更改 ?

对于这个(常见的?)场景,建议的工作流程是什么?我应该采取不同的做法吗?

【问题讨论】:

    标签: c# nuget nuget-package


    【解决方案1】:
    Update-Package –reinstall <packageName>
    

    这是每次自动卸载和安装nuget包。文档在https://docs.nuget.org/consume/reinstalling-packages

    【讨论】:

    • 正如我上面提到的,我必须有两个提要,一个带有临时构建的开发提要和发布提要。开发完成后,如何确保它是从发布提要而不是开发提要中提取的? -source 参数是否足够?我还需要对解决方案 B 中的所有项目做任何事情吗? Update-Package als 作用于解决方案中的当前项目,但不是全部。
    • 我希望您谈论的是 nuget 的两个来源。因此,您必须同时添加了开发和发布提要 nuget 源路径。工具 -> Nuget 包管理器 -> 包源。添加两个来源。安装时,您需要选择要下载包的源
    • 我的两个来源一直都处于活动状态。我看不到在两个活动源之间进行选择的方法。我将不得不暂时停用开发源。这看起来不是一个好的工作流程。我想我将不得不使用-source 参数。
    • 如果您在 Visual Studio 中工作,那么您可以选择在 nuget 包管理控制台的下拉列表中选择源或使用管理 nuget 选择源。如果您使用 msbuild 或从 Visual Studio 外部使用,那么首先您需要设置源代码,然后恢复 NuGet.exe setapikey -Source NuGet.exe restore
    • 请注意,为了使这个工作你必须先删除包含包的本地文件夹,否则它不会覆盖它,它会保留旧版本:Package' Foo.1.1.5' 已存在于文件夹'C:\projects\bar\packages'
    猜你喜欢
    • 2019-07-13
    • 2015-06-16
    • 1970-01-01
    • 2020-01-19
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多