如何在VS 2012中的Web部署发布任务之前执行PowerShell脚本?

Len*_*rri 19 powershell publish msdeploy post-build-event visual-studio-2012

目前,我使用Visual Studio 2012在我的Web项目中配置了一个构建后事件,如下所示:

在此输入图像描述

这基本上调用PowerShell脚本向每个.cs文件添加版权声明.

我想要做的是仅在将Web应用程序发布到远程服务器之前执行此PowerShell脚本.这样做我每次需要调试项目时都不会遇到延迟.你知道有什么方法可以实现吗?


根据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>
Run Code Online (Sandbox Code Playgroud)

Say*_*imi 19

这取决于你之前的定义,但下面是一种技术.

使用VS2012创建发布配置文件时,它将在Properties\PublishProfiles文件夹(My Project\PublishProfiles for VB)中创建.pubxml文件.这些是MSBuild文件,您可以编辑它们以自定义发布过程.在您的情况下,您可以在发布实际发生之前将目标注入发布过程.您可以通过扩展PipelineDependsOn属性来执行此操作,如下所示.

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

<Target Name="CustomBeforePublish">
  <Message Text="********************************** CustomBeforePublish ***********************************" Importance="high"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

关于.wpp.targets定制的FYI,这是我们对VS2010唯一的技术.我在这里的建议如下; 在大多数情况下自定义.pubxml文件,如果要自定义给定项目的每个发布,则仅创建.wpp.targets文件.

  • 如果我想在*(之前)发布之后执行某些内容,该怎么办? (6认同)

Ale*_*xei 7

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>
Run Code Online (Sandbox Code Playgroud)

注意:这将针对预览和实际发布操作执行,因此可以在实际发布之前找出预发布错误。