我有一个 asp.net 项目,需要在每次发布后运行一些代码。
我尝试通过以下方式完成此操作:
- 使用vs工程文件
使用外部构建工具 Cake (c# make)
1.) 所以找到了一些与这个问题相关的主题:
所以按照建议我将以下代码添加到我的项目文件中:
<Target Name="BeforePublish">
<Message Text="BeforePublish"></Message>
<Warning Text="BeforePublish"></Warning>
</Target>
<Target Name="AfterPublish">
<Message Text="AfterPublish"></Message>
<Warning Text="AfterPublish"></Warning>
</Target>
<Target Name="MSDeployPublish" >
<Message Text="MSDeployPublish"/>
<Warning Text="MSDeployPublish"/>
</Target>
<Target Name="PipelinePreDeployCopyAllFilesToOneFolder" >
<Message Text="PipelinePreDeployCopyAllFilesToOneFolder" />
<Warning Text="PipelinePreDeployCopyAllFilesToOneFolder" />
</Target>
<Target Name="BeforeBuild">
<Message Text="BeforeBuild"></Message>
<Warning Text="BeforeBuild"></Warning>
</Target>
<Target Name="AfterBuild">
<Message Text="AfterBuild"></Message>
<Warning Text="AfterBuild"></Warning>
</Target>
但只有 Before- 和 AfterBuild 被执行。所有其他目标都被完全忽略了。可能是因为这些其他主题使用 VS 2010 和 2012。在 VS 2017 中是否有可行的方法来执行此操作?
2.) 当我在任务中使用以下代码时,我得到的输出与我用 VS 编译它时得到的输出不同。
MSBuild(projectFile, new MSBuildSettings()
.WithProperty("OutDir", publishDir)
.WithProperty("DeployTarget", "WebPublish")
.WithProperty("DeployOnBuild", "true")
.WithProperty("WebPublishMethod", "FileSystem")
.WithProperty("Configuration", "Release")
);
因此这也不是一个可行的解决方案 atm。
我很感谢任何帮助让它以某种方式工作的人。
最佳答案
这取决于你想做什么,但如果你想让你的代码在发布后运行,你需要将你的任务放在 Microsoft.Web.Publishing.targets 的目标之一之后(搜索文件以查看目标的完整列表)。通常你需要 AfterTargets="MSDeployPublish"
关于c# - 为 ASP.NET 自定义发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55099841/