发布期间自定义app_offline.htm文件

Cha*_*ino 28 asp.net asp.net-mvc publish visual-studio-2010 app-offline.htm

当我发布我的ASP.NET MVC应用程序时,它会生成一个app_offline.htm文件,以便在网站更新网站时使网站脱机,然后在发布成功后删除该文件.

这很酷,我真的很喜欢这个想法,但是我想创建我自己的自定义app_offline.htm文件,该文件是发布操作所知道的,并将它放在不影响我的开发站点的地方 - 也就是说它不在我的开发站点的根目录一直在脱机.

编辑:从Scott Gu关于app_offline.htm的帖子的评论来看,似乎用VS 2005无法自定义app_offline.htm文件 - 这是用VS 2008和现在的VS 2010改变的吗?

Eon*_*dan 26

我知道这已经过时了,但是在我看到这里之后我找到了一个解决方案,我想我应该提供一个答案.VS 11将发布app_offline.htm文件保存在以下位置:

C:\Users\[user]\AppData\Roaming\Microsoft\VisualStudio\11.0\app_offline.htm
Run Code Online (Sandbox Code Playgroud)

我已对此进行了测试并对其进行了自定义,如果您更改此文件,它确实有效.当然,缺点是这是用于所有Web发布的文件.

  • 不幸的是,我刚刚发现VS决定稍后覆盖它.我同意,拥有一个可定制的解决方案会很好 (3认同)
  • 我刚刚在我的本地计算机上将C:\ users\[user]\AppData\...\app_offline.htm更改为只读,它似乎正在停滞不前. (2认同)

Lem*_*eed 11

许多人认为合适的简单解决方案只需添加您自己的文件,该文件也以"app_offline.htm"您的解决方案命名.

我已经使用Visual Studio 2015测试了这个方法,它确实有效.

但是,唯一的缺点是在发布过程中,首先app_offline.htm复制默认生成的文件,然后将解决方案文件显示为按字母顺序/接近字母顺序.

这意味着您的自定义app_offline.htm文件可以快速(但不是立即)覆盖系统生成的文件.因此app_offline.htm,在使用您的自定义文件进行更新之前,(丑陋)系统生成的副本可能会在启动发布的1-2秒窗口内提供给请求.

发布过程会自动app_offline.htm从远程服务器删除它,无论其内容或来源如何.

优点是(取代系统副本)是您自己的副本是可移植的,是自动解决方案特定的,并与源代码控制一起使用.

我知道这个问题很老,但我希望这有助于其他人解决这个问题.


And*_*ock 10

我用自己的

app_offline.htm_
Run Code Online (Sandbox Code Playgroud)

解决方案中的文件已发布.然后,我的部署脚本将其重命名(删除尾部_)以使其处于活动状态.

然后我可以运行我的db脚本/做任何事情然后重命名文件使网站恢复.


小智 5

安德鲁·布洛克的回答很有魅力!尽管这取决于您使用的视觉工作室。

C:\Users\用户名\AppData\Roaming\Microsoft\VisualStudio

是你应该首先登陆的目录,选择你的VS版本[8.0/9.0.....]并编辑文件app_offile.htm


jsc*_*rle 5

的原始内容app_offline.htm确实存储在一个神秘位置(可能硬编码在其中一个二进制文件内),但是 Visual Studio 在上传之前确实将内容写入物理文件。

如果您至少发布过一次,则使用命令提示符进行简单搜索dir C:\app_offline.htm /s/a/b应该会找到写入临时文件的位置。它应该是类似的东西C:\Users\username\AppData\Roaming\Microsoft\VisualStudio\16.0_5fc0d832\app_offline.htm。我不确定末尾的十六进制字符串对于每个安装或用户是否都相同。

将该文件设置为只读确实可以防止 Visual Studio 覆盖其内容,并且对该文件的修改实际上会在发布过程中上传。但是,它会导致内部错误,随着时间的推移,最终可能会阻止其上传。

该文件app_offline.htm是在构建后事件之前写入的,因此只需在 Visual Studio 开始上传之前覆盖即可。

更具弹性的方法是执行以下操作:

1) 在您的项目中创建自定义app_offline.htm(不在项目的根文件夹中,它将阻止您使用 F5 开始调试。)

2) 使用构建后app_offline.htm事件将自定义项目文件夹中的内容复制到 Visual Studio 的暂存文件夹中。

构建后事件命令行:

copy /y "$(ProjectDir)Resources\app_offline.htm" 
"C:\Users\%username%\AppData\Roaming\Microsoft\VisualStudio\16.0_5fc0d832\app_offline.htm"
Run Code Online (Sandbox Code Playgroud)


小智 0

早在 2006 年,Scott Gu 就表示无法自定义 VS 在 Publish 上生成的文件。

原文章内评论

我也有兴趣解决这个问题,但我无法在谷歌上找到任何明确的相反信息。