我正在创建 NuGet 包。我在content
文件夹中放了两个文件,exe 和配置文件,当用户安装此软件包时将添加它们。
此外,我想更改这两个文件的 VS 项目属性。
构建软件包时我需要做什么?
我正在创建 NuGet 包。我在content
文件夹中放了两个文件,exe 和配置文件,当用户安装此软件包时将添加它们。
此外,我想更改这两个文件的 VS 项目属性。
构建软件包时我需要做什么?
当您说“应用属性更改”时,您是指文件系统属性,例如上次修改时间、隐藏标志等?
如果是这样,则可以使用一组运行的 PowerShell 脚本(如果它们存在于您的包中),您可以使用它来执行此操作。当你构建包时它不会发生,但是当有人安装包时它会运行——从用户的角度来看,这应该具有相同的效果。您可能想要Init.ps1
或Install.ps1
。
从NuGet 文档中的包安装和删除期间自动运行 PowerShell 脚本:
包可以包含在安装或删除包时自动运行的 PowerShell 脚本。NuGet 使用以下约定根据文件名自动运行脚本:
Init.ps1
首次在解决方案中安装软件包时运行。
- 如果将相同的包安装到解决方案的其他项目中,则在这些安装期间不会运行脚本。
- 每次打开解决方案时,该脚本也会运行。例如,如果您安装包,关闭 Visual Studio,然后启动 Visual Studio 并打开解决方案,则
Init.ps1
脚本会再次运行。Install.ps1
在项目中安装包时运行。
- 如果同一个包安装在一个解决方案的多个项目中,则每次安装包时都会运行该脚本。
- 包必须在 content 或 lib 文件夹中有文件
Install.ps1
才能运行。只是在工具文件夹中有一些东西不会启动它。- 如果你的包也有
init.ps1
,install.ps1
在init.ps1
.Uninstall.ps1
每次卸载软件包时运行。- 这些文件应位于包的工具目录中。
- 在文件的顶部,添加以下行:
param($installPath, $toolsPath, $package, $project)
$installPath
是安装包的文件夹的路径$toolsPath
是安装包的文件夹中 tools 目录的路径$package
是对包对象的引用。$project
是对 EnvDTE 项目对象的引用,表示安装包的项目。注意:这将在Init.ps1
. 在这种情况下,没有对特定项目的引用,因为它在解决方案级别运行。此对象的属性在 MSDN 文档中定义。- 当您
$project
在创建脚本时在控制台中进行测试时,您可以将其设置为$project = Get-Project