NuGet, как применить свойства к файлам - PullRequest
3 голосов
/ 07 декабря 2011

Я создаю пакет NuGet. Я поместил два файла в папку content, exe и config, которые будут добавлены при установке этого пакета пользователем.

Кроме того, я хотел бы изменить свойства проекта VS для этих двух файлов.

Что мне нужно для этого сделать при сборке пакета?

1 Ответ

4 голосов
/ 09 декабря 2011

Когда вы говорите «применить изменение свойств», вы имеете в виду свойства файловой системы, такие как время последнего изменения, скрытый флаг и т. Д .?

Если это так, существует набор сценариев PowerShell, которые выполняются (если они существуют в вашем пакете), которые вы можете использовать для этого. Это не произойдет, когда вы создадите пакет, но он запустится, когда кто-нибудь установит пакет, что должно иметь тот же эффект с точки зрения пользователей. Вы, вероятно, хотите либо Init.ps1, либо Install.ps1.

С Автоматический запуск сценариев PowerShell во время установки и удаления пакета в документации NuGet:

Пакет может включать сценарии PowerShell, которые автоматически запускаются при пакет установлен или удален. NuGet автоматически запускает скрипты на основе их имен файлов с использованием следующих соглашений:

  • Init.ps1 запускается при первой установке пакета в решение.
    • Если тот же пакет установлен в дополнительный проекты в решении, скрипт не запускается во время тех установок.
    • Сценарий также запускается каждый раз, когда решение открыт. Например, если вы устанавливаете пакет, закройте Visual Studio, а затем запустите Visual Studio и откройте решение, Init.ps1 скрипт запускается снова.
  • Install.ps1 запускается, когда пакет установлен в проекте.
    • Если один и тот же пакет установлен в нескольких проектах в решении, скрипт запускается каждый раз при установке пакета.
    • Пакет должен содержать файлы в папке содержимого или библиотеки, чтобы Install.ps1 мог работать. Просто наличие чего-либо в папке инструментов не сработает.
    • Если ваш пакет также имеет init.ps1, install.ps1 запускается после init.ps1.
  • Uninstall.ps1 запускается при каждом удалении пакета.
  • Эти файлы должны находиться в каталоге инструментов вашего пакета.
  • В верхней части файла добавьте эту строку: param($installPath, $toolsPath, $package, $project)
    • $installPath - путь к папка, в которой установлен пакет
    • $toolsPath - это путь к каталог инструментов в папке, где установлен пакет
    • $package является ссылкой на объект пакета.
    • $project является ссылка на объект проекта EnvDTE и представляет проект пакет установлен в. Примечание: это будет нулевым в Init.ps1. В этот случай не имеет ссылки на конкретный проект, потому что он работает на уровне решения. Свойства этого объекта определены в документации MSDN.
  • Когда вы тестируете $project в консоли при создании ваших сценариев, вы можете установить $project = Get-Project
...