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