3

我正在创建 NuGet 包。我在content文件夹中放了两个文件,exe 和配置文件,当用户安装此软件包时将添加它们。

此外,我想更改这两个文件的 VS 项目属性。

构建软件包时我需要做什么?

4

1 回答 1

4

当您说“应用属性更改”时,您是指文件系统属性,例如上次修改时间、隐藏标志等?

如果是这样,则可以使用一组运行的 PowerShell 脚本(如果它们存在于您的包中),您可以使用它来执行此操作。当你构建包时它不会发生,但是当有人安装包时它会运行——从用户的角度来看,这应该具有相同的效果。您可能想要Init.ps1Install.ps1

从NuGet 文档中的包安装和删除期间自动运行 PowerShell 脚本:

包可以包含在安装或删除包时自动运行的 PowerShell 脚本。NuGet 使用以下约定根据文件名自动运行脚本:

  • Init.ps1首次在解决方案中安装软件包时运行。
    • 如果将相同的包安装到解决方案的其他项目中,则在这些安装期间不会运行脚本。
    • 每次打开解决方案时,该脚本也会运行。例如,如果您安装包,关闭 Visual Studio,然后启动 Visual Studio 并打开解决方案,则Init.ps1 脚本会再次运行。
  • Install.ps1在项目中安装包时运行。
    • 如果同一个包安装在一个解决方案的多个项目中,则每次安装包时都会运行该脚本。
    • 包必须在 content 或 lib 文件夹中有文件Install.ps1才能运行。只是在工具文件夹中有一些东西不会启动它。
    • 如果你的包也有init.ps1,install.ps1init.ps1.
  • Uninstall.ps1每次卸载软件包时运行。
  • 这些文件应位于包的工具目录中。
  • 在文件的顶部,添加以下行:param($installPath, $toolsPath, $package, $project)
    • $installPath是安装包的文件夹的路径
    • $toolsPath是安装包的文件夹中 tools 目录的路径
    • $package是对包对象的引用。
    • $project是对 EnvDTE 项目对象的引用,表示安装包的项目。注意:这将在Init.ps1. 在这种情况下,没有对特定项目的引用,因为它在解决方案级别运行。此对象的属性在 MSDN 文档中定义。
  • 当您$project在创建脚本时在控制台中进行测试时,您可以将其设置为$project = Get-Project
于 2011-12-09T15:52:23.250 回答