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 "$(ProjectDir)\Copyright.ps1"" />
</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文件.
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 "$(ProjectDir)\InnerFolder\script.ps1"" />
</Target>
Run Code Online (Sandbox Code Playgroud)
注意:这将针对预览和实际发布操作执行,因此可以在实际发布之前找出预发布错误。
归档时间: |
|
查看次数: |
7761 次 |
最近记录: |