未调用NuGet-install.ps1

未调用NuGet-install.ps1,nuget,nuget-package,Nuget,Nuget Package,我正在尝试创建我的第一个NuGet包。我不知道为什么我的install.ps1脚本没有被调用。这是目录结构 --Package | - MyPackage.nuspec - tools | - Install.ps1 - some_xml_file 我使用这个命令行构建包 nuget.exe pack MyPackage.nuspec 当我从VS Package Manager控制台安装软件包时,不会调用Install.ps1 我想我可能在脚本中有一些错误,这就是原因,所以我把所

我正在尝试创建我的第一个NuGet包。我不知道为什么我的install.ps1脚本没有被调用。这是目录结构

--Package
|
 - MyPackage.nuspec
 - tools
 |
  - Install.ps1
  - some_xml_file
我使用这个命令行构建包
nuget.exe pack MyPackage.nuspec

当我从VS Package Manager控制台安装软件包时,不会调用Install.ps1

我想我可能在脚本中有一些错误,这就是原因,所以我把所有的东西都注释掉了

param($installPath, $toolsPath, $package, $project)
"ECHO"

但我没有看到ECHO出现在PackageManager控制台中。有什么问题吗?

Install.ps
仅在
\lib
和/或
\content
文件夹中有内容时才会调用,但不适用于“仅限工具”软件包。见:

要运行Install.ps1,软件包的content或lib文件夹中必须有文件。仅仅在tools文件夹中放一些东西并不会让这件事发生

改为使用
Init.ps1
(但是,每次打开解决方案时都会执行此操作)。

Install.ps1
(和
Uninstall.ps1
)不再在v3中调用,但您可以使用
Init.ps1
。见:

Powershell脚本支持已修改为不再执行安装 和卸载脚本,但仍会执行初始化脚本。一些 原因是无法确定是哪个软件包 当并非所有包都被直接引用时,需要运行脚本 通过一个项目


安装脚本的替代方案有时可以是包目标文件。此目标文件自动编织到项目文件(csproj,…)中,并通过生成调用

要允许Nuget找到此目标文件并将其编入,必须执行以下两项操作:

  • 目标文件的名称必须是
    .targets
  • 它必须保存在包顶层的文件夹
    build
如果要将某些内容复制到输出文件夹(例如,一些附加的二进制文件,如本机DLL),可以将这些二进制文件放入文件夹
binaries
下的包中,并在目标文件中使用此片段进行复制:



谢谢,我在帮助页面上没有注意到。我将Install.ps1改为Init.ps1,它可以正常工作。但我仍然看不到回声。虽然我看到“已成功安装packageName”,但在安装软件包后,请重新打开您的解决方案。但是,请确保PackageManager控制台已经可见。然后,您应该会看到
Init.ps1
脚本的任何输出。是的,我在VS开始时看到了输出。但不在安装包上。这正常吗?是的,我想是的。至少我在尝试类似的东西时也得到了同样的结果。感觉像一个bug,但是…也许你也知道为什么不调用Uninstall.ps1?我在Powershell ISE下验证了它是否有效(删除安装期间创建的文件夹)。安装和卸载脚本的替代方案是什么?