【问题标题】:How to create a powershell script that triggers a NuGet Update-Package –reinstall?如何创建触发 NuGet Update-Package –reinstall 的 powershell 脚本?
【发布时间】:2015-06-15 05:10:06
【问题描述】:

我有一个 nuget 规范,可以在特定文件夹上安装库文件 (dll) 和两个 zip 包。从 Visual Studio 2013 手动更新包时没有问题。然而,当它被我们的 CI 服务器 TeamCity 和 CCNet 触发时,它只会更新 dll 文件,而不是更新至关重要的两个 zip 包。

我假设由于文件夹中存在以前的 zip 文件,覆盖文件可能有困难,因为在 VS2013 中,提示确认用户是否要覆盖这些文件。

当我使用 VS2013 的包管理器控制台时,我可以轻松地触发 Update-Package –reinstall [Package Id] 并且它会正确地完成工作。现在,我需要做同样的事情,并从我们的 CI 服务器应用一些自动化。

如果我理解正确的话,我可以从 powershell 触发 nuget 命令吗?

非常感谢您的意见,我不是这方面的专家。

【问题讨论】:

  • 您可以从 Powershell 脚本中调用任何 exe 文件,因此如果您的 nuget 提供了一个 exe 来触发其命令,是的,您可以。关于覆盖那些 zip 文件,您可以执行 Copy-Item $source $destination -force 这将模拟覆盖提示的“是”。很有可能您的 CI 服务器也有在命令期间强制覆盖文件的选项,所以只需查找他们的手册。
  • 您好 Vesper,感谢您的意见。如何从 powershell 调用 nuget?
  • 我认为您应该安装 nuget command line 并将这些命令用作 exe 调用。我不确定如何在项目的上下文中调用命令行,但您可能会从引用的数据中找到一些有用的东西。并且,您可以将FileConflictAction 设置为overwrite 来重建您的压缩文件。

标签: powershell nuget-package


【解决方案1】:

您应该运行update command from nuget.exe。更新命令的参数之一是FileConflictAction,它告诉当被要求覆盖或忽略项目引用的现有文件时采取什么操作:overwriteIgnoreNone

您可能必须将所有内容包装在一个 powershell 脚本中,可能是指 EnvDTE,以设置您的路径并模仿您在 Visual Studio 中的 PowerShell 控制台所拥有的环境。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2015-06-07
    • 2017-10-22
    • 2015-12-14
    • 1970-01-01
    • 2023-03-18
    • 2012-03-02
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多