ASP.NET WebSite发布与复制?

E-A*_*E-A 8 asp.net publishing web

我遇到了很多与发布有关的问题,比如当你需要对代码进行小的更改时,有时生成的DLL文件(例如default.aspx.CS发布时的dll文件)无法被IIS识别,说代码隐藏是错误的.很抱歉没有记住确切的错误消息.我希望你知道我在这一点上的意思.

因此,我通常做一个简单的Copy Paste操作而不是发布.

你可以告诉我,我没有使用Publish方法丢失了什么吗?出版如何更好?或者您更喜欢哪一个,为什么?

基本上是它的利弊情况.

谢谢

EdS*_*dSF 15

那么,这取决于你所说的"复制":

随着Publishing你选择,pre-compile你的应用程序的全部或部分.您可以publish到文件系统中的本地文件夹(而不是目标/主机),然后复制更新的文件(仅限).如果你正在使"代码隐藏"(c#/ vb代码)发生变化,这意味着你可能只需要"复制"/覆盖dlls.不言而喻,如果您对"内容"更改(html/razor/script/etc)进行了更改,那么您还需要复制/覆盖这些更改.

如果您不熟悉部署,您可能会发现自己只是复制/覆盖"一切" ,这是最安全的方式.获得更多经验后,您将"识别"您只需要更新哪些资产(一个或几个dlls和/或内容代码,而不是"一切").这通常没有什么神奇之处,通常只是在您published(本地)或rebuild您的Web应用程序之后查看dll /文件的时间戳.

我建议您这样做,local publish以便查看服务器上实际需要的内容.发布到本地文件系统/文件夹的文件是您的主机/服务器上需要的文件.这样做将可视化并删除所有"神秘" Publishing:

  • 你会看到实际需要的东西(在你的服务器上)与不需要的东西
  • 您将看到文件时间戳,它将帮助您识别实际更改的文件与未更改的文件(因此不需要更新).
  • 一旦掌握了它,就不需要"复制"/ ftp"所有内容",只需更新实际修改过的文件(仅限).

因此,"复制"可能意味着上述内容,或者如果您说您只是将所有开发代码(原始(vb/cs)html/cs/vb)复制到主机,那么这意味着您的站点将dynamically compiled随着每个资源的需要/请求(没有任何内容pre-compiled).同样"简单",但你输了pre-compilation,这意味着每个网页被请求/需要时会有延迟(ASP.net需要动态编译).此外,您还在服务器上公开源代码.根据您的情况,这可能并不意味着什么,但还有一件事需要考虑.

这里有关于预编译和选项的更多信息.


Wik*_*hla 6

假设我们考虑一个aspx页面及其aspx.cs代码隐藏文件,有三种替代方法来部署您的站点:

  1. 您可以将两者都复制到iis.在第一次请求时,aspx将被编译为.cs,然后两个.cses将被编译为temp .dll
  2. 您可以"发布"到iis,这会将类后面的代码编译为.dll,但会复制aspx未触及.aspx将在第一次请求时转换为.cs然后转换为.dll
  3. 您可以"发布"该站点,然后使用aspnet_compiler手动预编译它.发布会像以前一样编译后面的代码到.dll,然后预编译将通过删除内容并将编译后的代码移动到另一个.dll来清除.aspx文件.

这三种模式各有利弊.

第一个是最容易逐步更新,但同时最容易进行不必要的修改.

第二个也很容易,可以从vs调用,它关闭了在服务器上进行一些不需要的修改的可能性但是.aspxses仍然需要时间来编译第一个请求

第三,花时间和一些手动操作,但防止任何变化,并加快网站的热身,因为不需要资产的编译.它非常适合共享环境.