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:
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 "$(ProjectDir)\Copyright.ps1"" />
</Target>
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.
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 "$(SolutionDir)Copyright.ps1" "$(_MSDeployDirPath_FullPath)"" />
</Target>
</Project>
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 "$(ProjectDir)\InnerFolder\script.ps1"" />
</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.
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