Как выполнить PowerShell script только до развертывания веб-службы публикации в VS 2012?
В настоящее время у меня есть событие post-build, настроенное в моем веб-проекте с использованием Visual Studio 2012 следующим образом:
![enter image description here]()
В основном это вызывает PowerShell script, чтобы добавить уведомление об авторских правах в каждый файл .cs.
Что я хотел бы сделать, так это выполнить эту powershell script только до Публикация веб-приложения на удаленный сервер. При этом я не буду испытывать задержки каждый раз, когда мне нужно отлаживать проект. Знаете ли вы о каком-либо способе выполнения этого?
Согласно Sayed answer, я настроил специальный профиль публикации и добавил следующее:
<PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
</PropertyGroup>
<Target Name="CustomBeforePublish">
<Message Text="******* CustomBeforePublish *******" Importance="high" />
<Exec Command="powershell.exe -file "$(ProjectDir)\Copyright.ps1"" />
</Target>
Ответы
Ответ 1
Это зависит от того, как вы определяете ранее, а ниже - это один из методов.
Когда вы создаете профиль публикации с VS2012, он создаст вам файл .pubxml в папке "Свойства\Публикация" (My Project\PublishProfiles for VB). Это файлы MSBuild, и вы можете редактировать их, чтобы настроить процесс публикации. В вашем случае вы можете ввести цель в процесс публикации, прежде чем публикация действительно произойдет. Вы можете это сделать, расширив свойство PipelineDependsOn, как показано ниже.
<PropertyGroup>
<PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
</PropertyGroup>
<Target Name="CustomBeforePublish">
<Message Text="********************************** CustomBeforePublish ***********************************" Importance="high"/>
</Target>
FYI относительно настройки .wpp.targets, это был единственный метод, который мы использовали для VS2010. Моя рекомендация здесь следующая: настройте файл .pubxml для большинства случаев и создайте файл .wpp.targets, если вы хотите настроить каждую публикацию данного проекта.
Ответ 2
Объявите следующий файл ProjectName.wpp.targets
в корневом каталоге вашего веб-приложения:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BeforeAddContentPathToSourceManifest>
$(BeforeAddContentPathToSourceManifest);
AddCopyright;
</BeforeAddContentPathToSourceManifest>
</PropertyGroup>
<Target Name="AddCopyright">
<!-- I recommend passing in $(_MSDeployDirPath_FullPath) to your script
as the base path to search to avoid having to perform a VCS rollback
(files are copied there before the deployment)
-->
<Exec Command="powershell.exe -file "$(SolutionDir)Copyright.ps1" "$(_MSDeployDirPath_FullPath)"" />
</Target>
</Project>