我遇到了许多与发布有关的问题,例如当您需要对代码进行细微更改时,有时生成的DLL文件(发布时为default.aspx.CS
的dll文件)无法被IIS识别代码隐藏是错误的。很抱歉没有记住确切的错误消息。我希望你知道我的意思。
因此,我通常会执行简单的Copy Paste
操作,而不是发布。
你可以告诉我不使用Publish方法我错过了什么吗?出版如何更好?或者您更喜欢哪一个,为什么?
基本上是利弊情况。
三江源
答案 0 :(得分:14)
嗯,这取决于你所说的“复制”:
使用Publishing
,您可以选择pre-compile
全部或部分应用。您可以publish
到文件系统中的本地文件夹(而不是目标/主机),然后复制更新的文件(仅限)。如果您正在修改“代码隐藏”(c#/ vb代码),这意味着您可能只需要“复制”/覆盖dlls
。不言而喻,如果您对“内容”更改(html / razor / script / etc)进行了更改,那么您还需要复制/覆盖这些更改。
如果您不熟悉部署,您可能会发现自己只是复制/覆盖“一切”,这是最安全的方式。获得更多经验后,您将“识别”您只需要更新哪些资产(一个或几个dlls
和/或内容代码,而不是“一切”)。通常情况下,只需在published
(本地)或rebuild
您的网络应用程序后查看dll /文件的时间戳即可。
我建议您执行local publish
,以便了解服务器上实际需要的内容。发布到本地文件系统/文件夹的文件是您的主机/服务器上需要的文件。这样做将可视化并删除Publishing
所带来的“神秘感”:
所以“复制”可能意味着上述内容,或者如果您说您只是将所有开发代码(原始(vb/cs)html/cs/vb
)复制到您的主机,那么这意味着您的网站将是dynamically compiled
因为需要/请求每个资源(没有pre-compiled
)。同样“简单”,但你确实失去了pre-compilation
,这意味着每个网页被请求/需要时会有延迟(ASP.net需要动态编译)。此外,您还在服务器上公开源代码。根据您的情况,这可能并不重要,但还有一件事需要考虑。
答案 1 :(得分:6)
假设我们考虑一个aspx页面及其aspx.cs代码隐藏文件,有三种替代方法来部署您的站点:
这三种模式各有利弊。
第一个是最容易逐步更新,但同时也是最容易被不必要的修改。
第二个也很容易,可以从vs调用,它关闭了在服务器上进行一些不需要的修改的可能性,但.aspxses仍然需要时间来编译第一个请求
第三种是花时间和一些手动操作但是可以防止任何变化,并且还可以加速网站的预热,因为不需要编译资产。它非常适合共享环境。