Jak wykonać skrypt PowerShell tylko przed web deploy Publish zadanie w VS 2012?

Obecnie mam skonfigurowane Zdarzenie post-build w moim projekcie WWW przy użyciu Visual Studio 2012 w następujący sposób:

Tutaj wpisz opis obrazka

To w zasadzie wywołuje skrypt PowerShell, aby dodać informację o prawach autorskich do każdego .plik cs.

Chciałbym wykonać ten skrypt powershell tylko przed publikowanie aplikacji internetowej na zdalnym serwerze. W ten sposób nie doświadczę opóźnienia za każdym razem, gdy będę musiał debugować projekt. Czy znasz jakiś sposób na osiągnięcie to?


Zgodnie z odpowiedź Sayeda , dostosowałem konkretny profil publikacji i dodałem to:

<PipelineDependsOn>
  CustomBeforePublish;
  $(PipelineDependsOn);
</PipelineDependsOn>
</PropertyGroup>
<Target Name="CustomBeforePublish">
<Message Text="******* CustomBeforePublish *******" Importance="high" />
<Exec Command="powershell.exe -file &quot;$(ProjectDir)\Copyright.ps1&quot;" />
</Target>
Author: Community, 2012-10-16

3 answers

To zależy od tego, jak zdefiniujesz wcześniej, ale poniżej jest jedna technika.

Podczas tworzenia profilu publish z VS2012 utworzy Ci.plik pubxml w folderze Properties \ Publisprofiles (Mój projekt \ Publisprofiles dla VB ). Są to Pliki MSBuild i można je edytować, aby dostosować proces publikowania. W Twoim przypadku możesz wprowadzić obiekt docelowy do procesu publikowania, zanim faktycznie nastąpi Publikacja. Można to zrobić rozszerzając właściwość PipelineDependsOn jako poniżej.

<PropertyGroup>
  <PipelineDependsOn>
    CustomBeforePublish;
    $(PipelineDependsOn);
  </PipelineDependsOn>
</PropertyGroup>

<Target Name="CustomBeforePublish">
  <Message Text="********************************** CustomBeforePublish ***********************************" Importance="high"/>
</Target>

FYI dotyczące dostosowania .wpp.cele, to była jedyna technika jaką mieliśmy dla VS2010. Moja rekomendacja jest następująca; dostosuj .plik pubxml dla większości przypadków i tylko utworzyć .wpp.plik targets jeśli chcesz dostosować każdą publikację danego projektu.

 19
Author: Sayed Ibrahim Hashimi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-16 17:45:30

Zadeklaruj następujący plik ProjectName.wpp.targets w katalogu głównym Twojej aplikacji internetowej:

<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>
 4
Author: Richard Szalay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-16 05:54:28

Sayed's Odpowiedz na problem. Jednak myślałem o udzieleniu w pełni działającej odpowiedzi (testowanie w Visual Studio 2017): {]}

 <PropertyGroup>
    <PipelineDependsOn>
       PreBuildScript;
       $(PipelineDependsOn);
    </PipelineDependsOn>
  </PropertyGroup>

  <Target Name="PreBuildScript">
     <Message Text="Executing prebuild script" Importance="high"/>
     <Exec Command="powershell.exe -file &quot;$(ProjectDir)\InnerFolder\script.ps1&quot;" />
   </Target>

Uwaga: będzie to wykonywane zarówno dla podglądu, jak i rzeczywistej akcji publikowania, więc można znaleźć błędy przed opublikowaniem przed faktycznym opublikowaniem.

 1
Author: Alexei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-27 19:22:08