Запуск пользовательского сценария после публикации sh в файловой системе Visual Studio 2017
Я думаю, вы можете просто создать пользовательскую цель в файле xxxx.csproj
или xxxxxx.pubxml
.
Точно так же:
<Target Name="RunCustomScript" AfterTargets="GatherAllFilesToPublish">
<Exec Command="xxxx\xxxx.ps1" />
</Target>
Вы можете установить эту цель в xxxx.csproj
или xxxx.pubxml
.
Примечание , что GatherAllFilesToPublish
одна из системных целей процесса publi sh, и когда эта пользовательская цель зависит от GatherAllFilesToPublish
, она всегда будет запускать и выполнять сценарий adter publi sh process.
Update 1
Извините, что вовремя не поняли ваши требования. Я предполагаю, что вы хотите выполнить какую-либо операцию, например, копирование, когда все импортированные файлы опубликованы в папке publi sh.
В общем случае , этот шаг не относится ни к каким системным целям и MS подтвердила, что при публикации в файловой системе у них нет цели для запуска после этого.
"В настоящее время мы не поддерживаем выполнение пользовательских целей после публикации из VS для протокола файловой системы . "
Однако мы можем попробовать вот так:
1) создать собственную цель, которая использует AfterTargets="CopyAllFilesToSingleFolderForPackage" (runs just before the files are copied to the publish location)
.
2) В пользовательской цели используйте асинхронное выполнение AsyncExec
сценария, чтобы гарантировать, что операция папка publi sh file to publi sh будет выполнена во время выполнения сценария.
3) После этого в скрипте выполнение содержимого задерживается на 5 секунд (время можно изменить в соответствии с указанным c временем выпуска упакованного файла) чтобы убедиться, что скрипт Функция ontent выполняется после того, как система опубликует все файлы.
Шаг
1) установите пакет nuget с именем MSBuild.Extension. Упакуйте в ваш проект.
2) создайте пользовательскую цель и используйте ее AsyncExec
для выполнения вашего скрипта.
<Target Name="RunCustomScript" AfterTargets="GatherAllFilesToPublish">
<AsyncExec command="powershell.exe C:\Users\xxxxx\xxxx.ps1" />
</Target>
3 ) Откройте ваш скрипт, пожалуйста, добавьте это поверх всего содержимого, что означает, что вы не спите 5 секунд перед выполнением содержимого скрипта.
Start-Sleep -s 5 // 5 means 5 seconds
Следовательно, скрипт будет выполняться после всех файлы публикуются в папке publish
.
Надеюсь, это поможет вам.