source

VS 2012에서 웹 배포 게시 작업 전에만 PowerShell 스크립트를 실행하는 방법은 무엇입니까?

manycodes 2023. 10. 23. 21:57
반응형

VS 2012에서 웹 배포 게시 작업 전에만 PowerShell 스크립트를 실행하는 방법은 무엇입니까?

현재 Visual Studio 2012를 사용하여 웹 프로젝트에서 빌드 후 이벤트를 다음과 같이 구성했습니다.

enter image description here

기본적으로 PowerShell 스크립트를 호출하여 모든 .cs 파일에 저작권 고지를 추가합니다.

원격 서버에 웹 앱을 게시하기 에만 이 파워셸 스크립트를 실행합니다.그렇게 함으로써 프로젝트 디버그가 필요할 때마다 지연되는 일은 없을 것입니다.이것을 달성할 수 있는 방법을 알고 계십니까?


Sayed의 답변에 따라 특정 게시 프로파일을 사용자 정의하고 다음을 추가했습니다.

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

이전에 정의하는 방법에 따라 다르지만 아래는 하나의 기술입니다.

VS2012를 사용하여 게시 프로파일을 생성하면 Properties\에 .pubxml 파일이 생성됩니다.프로필 폴더(내 프로젝트) 게시VB에 대한 프로파일 게시).이 파일들은 MSBuild 파일이며 게시 프로세스를 사용자 정의하도록 편집할 수 있습니다.이 경우 게시가 실제로 발생하기 전에 게시 프로세스에 대상을 주입할 수 있습니다.아래와 같이 PipelineDependsOn 속성을 확장하여 이를 수행할 수 있습니다.

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

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

참고로 .wpp.targets의 커스터마이징과 관련된 FYI는 VS2010을 위한 유일한 기술이었습니다.대부분의 경우에 대해 .pubxml 파일을 사용자 지정하고 주어진 프로젝트의 모든 게시를 사용자 지정하려면 .wpp.targets 파일만 생성해야 합니다.

Sayed의 대답이 문제를 해결합니다.하지만, 저는 완전하게 작동하는 답변을 제공하려고 생각했습니다(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>

참고: 이 작업은 미리보기 작업과 실제 게시 작업 모두에 대해 실행되므로 실제 게시 전에 사전 게시 오류를 확인할 수 있습니다.

다음을 선언합니다.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>

언급URL : https://stackoverflow.com/questions/12907236/how-to-execute-a-powershell-script-only-before-a-web-deploy-publish-task-in-vs-2

반응형