NuGet如何将属性应用于文件

时间:2011-12-07 06:25:36

标签: nuget nuget-package

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

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

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

1 个答案:

答案 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.ps1install.ps1会在init.ps1之后运行。
    •   
  •   每次卸载软件包时都会运行
  • Uninstall.ps1
  •   
  • 这些文件应位于软件包的tools目录中。
  •   
  • 在文件顶部添加以下行:param($installPath, $toolsPath, $package, $project)   
        
    • $installPath是通往的路径   安装包的文件夹
    •   
    • $toolsPath是通往的路径   安装软件包的文件夹中的tools目录
    •   
    • $package是对包对象的引用。
    •   
    • $project是一个   引用EnvDTE项目对象并代表项目   包已安装到。注意:Init.ps1中的该值为空。在   那个案例没有对特定项目的引用,因为它   在解决方案级别运行。定义了此对象的属性   在MSDN文档中。
    •   
  •   
  • 在创建脚本时在控制台中测试$project时,可以将其设置为$project = Get-Project
  •