【问题标题】:NuGet does not execute scripts when restoring packages还原包时 NuGet 不执行脚本
【发布时间】:2023-03-31 16:25:01
【问题描述】:

在项目中恢复包时,Nuget 不执行脚本。

场景如下:我有一个安装了自定义 NuGet 包的项目。此项目已为解决方案启用 NuGet 包还原。这一切都完美无缺,我通过将项目从 TFS 放到一个空文件夹中进行了多次测试。

我已将 init.ps1 和 install.ps1 添加到 nuGet 包中,并且仍然可以正确获取并安装该包,但除非手动安装该包,否则脚本不会执行。

确切地说,如果我是第一次从 TFS 获取项目,init.ps1 和 install.ps1 都不会执行。

但是,如果我关闭解决方案并重新打开它,init.ps1 会执行(如预期的那样),但当然 install.ps1 仍然没有执行,因为软件包已经恢复/安装。

手动安装/卸载软件包时,两个脚本都会正常执行(即,如果软件包“恢复”,则不会运行)。

我的互联网搜索没有发现任何关于这种行为的参考。我是否遗漏了一些明显的东西,或者在恢复包时这是否正常?

【问题讨论】:

  • 包还原只是还原,而不是安装。我认为这是设计使然。 nuget.codeplex.com/workitem/2728
  • 感谢您的链接 - 这也是我的结论。我没有意识到 init.ps1 背后的意图。至于 install.ps1,我认为这是有道理的,因为该软件包实际上已经“安装”了 - 它只是从项目文件夹中丢失,因此是“恢复”。

标签: visual-studio nuget


【解决方案1】:

使用了包还原功能,因此并非所有包都签入源代码管理。因此,它唯一要做的就是将 NuGet 包下拉到您的 ./solution/packages 文件夹中,以便可以在构建时正确解析程序集路径和引用。 NuGet 不会在还原过程中重新安装,这意味着它不会在还原过程中执行任何 xml 文件转换或运行 PowerShell 安装/卸载脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多