gpt4 book ai didi

c# - 发布 Web 应用程序时 AfterPublish 脚本不运行

转载 作者:太空狗 更新时间:2023-10-29 17:44:48 24 4
gpt4 key购买 nike

我有一个 ASP.NET 网络应用程序,当我进行更改或修复错误时,我会将其发布到我们的网站。我们想自动将项目文件的备份保存到我们的服务器(与 SVN checkin 分开),所以我写了一个批处理文件来将整个项目从我的本地驱动器复制到服务器。单独运行时批处理文件可以正常工作,所以这不是问题。如果这是一个问题,批处理文件不在项目的路径中。

然后我将这些行添加到我的 .csproj 文件中,就在结束 </project> 的正上方标签:

<Target Name="AfterPublish" >
<Exec Command="C:\deg\bat\backupRMA.cmd" />
</Target>

这遵循 MSDN for overriding a target 中的说明.

我也尝试过 this SO question 中概述的方法.看起来像这样:

<Target Name="BackUpRMAToIDrive" AfterTargets="MSDeployPublish" >
<Exec Command="C:\deg\bat\backupRMA.cmd" />
</Target>

那也不行。

为了完整起见,这里是批处理文件,它非常简单,但如果有人感兴趣,我可以解释这些开关:

xcopy C:\deg\ASP.NET\OnlineRMA_SinglePage\*.* /cherkyDi I:\common\AppDevBranch\Service\rma

我使用 Build > Publish RMA 在 VS2010 中发布,效果很好。只是备份脚本永远不会运行。唯一的共同点是脚本本身。我见过其他使用从源目录到目标目录的副本的示例,但我想我明白您可以通过 Exec 命令调用外部脚本吗? Here's the example SO question I found for that method .

我确定我遗漏了一些明显的东西,但我已经进入第二天摆弄一些看起来非常简单的东西,那么我遗漏了什么?

最佳答案

我看到一位 MS 开发人员的评论指出,发布到“文件系统”不会调用 MSDeployPublish 目标。你可以在这里看到。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/60b196e9-28e1-4d9d-b464-d57e42353754/vs2012-afterpublish-for-web-application?forum=msbuild

http://sedodream.com/PermaLink,guid,b352f04a-2449-4cbb-8125-7acdef9552e1.aspx

深入研究 *.targets 文件,我可以将一些目标放在 AfterTargets 属性中,这些目标在发布复制到临时 obj 输出文件夹 后完成运行。我永远找不到在复制到发布配置文件中定义的实际文件夹后运行的程序。

这是我认为您需要的:

  <Target Name="BackUpRMAToIDrive" AfterTargets="CopyAllFilesToSingleFolderForPackage">
<Exec Command="C:\deg\bat\backupRMA.cmd" />
</Target>

虽然我不确定您要备份什么 - 原始来源还是已发布的来源。在执行此 Exec 时,如果您需要“已发布文件”的路径,您可以通过 $(WebProjectOutputDir)\$(WPPAllFilesInSingleFolder) 将参数传递给您的脚本。这类似于 c:\{path to *.csproj}\obj\{build configuration}\Package\PackageTmp

关于c# - 发布 Web 应用程序时 AfterPublish 脚本不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com