Запускать пользовательский сценарий после публикации sh в файловой системе Visual Studio 2017 - PullRequest
0 голосов
/ 09 февраля 2020

Я создал профиль publi sh, который публикует sh в файловой системе, и мне нужно запустить собственный сценарий после завершения публикации sh из контекстного меню Visual Studio 2017.

1 Ответ

1 голос
/ 11 февраля 2020

Запуск пользовательского сценария после публикации 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.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...