Подтвердить что ты не робот

Как выполнить 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 &quot;$(ProjectDir)\Copyright.ps1&quot;" />
</Target>
4b9b3361

Ответ 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 &quot;$(SolutionDir)Copyright.ps1&quot; &quot;$(_MSDeployDirPath_FullPath)&quot;" />
  </Target>
</Project>