Когда вы говорите «применить изменение свойств», вы имеете в виду свойства файловой системы, такие как время последнего изменения, скрытый флаг и т. Д .?
Если это так, существует набор сценариев 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