2013-01-24 147 views
2

我有一个网页数量巨大的网页,我保留在生产服务器上的预编译版本(与固定命名)。如何部分预编译ASP.NET网站

每次我对代码进行任何更改时,我都必须发布整个网站,只需稍作更改即可。

在将我的更改部署到生产服务器之前,需要大约一个小时才能发布网站。

有没有办法只发布一批页面,以便发布过程更快?

是否有其他选项可以节省发布时间?

注:通过出版我的意思是预编译

任何建议都欢迎。

+0

您确认这是一个网站?不是一个Web应用程序?你在修改什么?模板代码(剃须刀,webform)还是c#? –

+0

是其使用第三方内容管理系统(Emerge)的网站 – Ankit

回答

0

如果您只修改html标签(nto服务器端标签)或css,则只能部署您更改的部分。

如果它是编译代码,你别无选择。

我想你可能不得不问你为什么花一个小时才能发布你的网站?你的编译时间很长吗? 。

+1

预编译的asp.net是不同的,所有页面都被放入程序集中,并且页面占位符不包含HTML/CSS/Server控件相反:http://msdn.microsoft.com/en-us/library/399f057w(v=vs.85).aspx – mattmanser

+0

它需要大量的时间来发布,因为它使用第三方内容管理系统及其编译后的大小800 MB – Ankit

0

减少编译时间和网站项目大小的一种方法是将您的网站分成几个较小且更易维护的站点。

您仍然可以在生产中一起部署这些单独的发布。

从其他项目的页面引用工作完美。您在IIS上的同一应用程序中的所有页面将共享相同的会话。所以对于最终用户来说,这仍然会是一个网站。

由于您减少了发布任何给定模块时要完成的工作,发布速度会更快。根据您所看到的合适批次划分您的模块。

你必须意识到这一点,但我会说它只是为了完成。当您发布网站时,您可以选择Use fixed naming and single page assemblies。选择此项可为bin目录中的每个页面创建一个不同的dll。您只需要上传更改过的页面和相应的dll。如果上传时间是一个问题,这将照顾它。

+0

感谢您的回复,但将它分成模块不是我的选择,我已经在使用'固定名称程序集'。 – Ankit

+0

为什么它不是一个选项?这是解决问题的最简单方法。 – nunespascal

+0

我在网站中使用第三方工具,它的大小非常庞大(大约500 MB),并且包含大量ascx和aspx页面,我无法移动/更改,并且只导致预编译时间占用任务 – Ankit

0

如果你发现你的页面有3个组件,* .designer,* .aspx * .cs,微软并没有真正意识到“预编译”。 * .cs全部需要编译成一个* .dll以部署到您的网站。传统上有两种类型的可执行文件,exe和dll。 Asp.Net网站被编译为一个dll,用于运行在服务器上的所有代码。微软并没有办法“半”编译一个dll,然后将它与未改变的另一半合并。

如果你的网站花了那么长时间,编译&部署。我建议你有更多的架构问题,然后是代码问题。在我工作的地方,我们的主网站有超过3,000,000行代码,以完成用户需要做的一切。我们不需要一个小时来部署。然而,我们所做的是将我们的业务逻辑分解成多个dll的超过100个dll,而我们的网站项目自身只是aspx和代码背后的代码,以推动流向我们的业务逻辑。这使得我们可以通过修改x数字dll来支持一项新功能。我们不必每次都部署所有100个dll,只是那些已经改变的dll,这就是dll的本质。如果我们的业务逻辑100%包含在我们的网站项目中,那么我们的编译,部署将会更长。

你要考虑重构你的代码到DLL的。另一个选择,如果你没有结婚的ASPX/ASP.NET解决方案是考虑一个ASP/MVC.NET解决方案。我会考虑重构你的网站。如果花费那么长时间,那么存在一些严重问题,即使您可以将数据访问分解为单独的dll,那么您不必经常编译&部署处理数据访问的dll,每次更改网站时,只有在你也改变了数据访问层。

+0

感谢您提供详细的答案,但在设计网站架构时,所有这些要点都已牢记在心。我的网站包含2000多个页面,控件,Web部件,小部件。我已经有单独的dll业务逻辑和数据访问层。 – Ankit

+0

@Ankit它只是一个建议...如果你喜欢它只是给我一个upvote .. – coder

-2

非常简单。

将所有HTML内容存储在单独文件中的代码中。数据库将是一个很好的主意。所有人都必须做的改变一些文本或交换图像将进入数据库或文件的内容,并更改一些标签。我推荐MySQL。

:)

0

由于以前的帖子提到,你不能以自动的方式做到这一点,但如果你想降低您的出版时间,你可以手动部署文件。

当发布一个网站,为您的网站的所有代码文件编译成网站bin文件夹一个.dll文件和所有的.aspx文件都被部署到其相关的路径。

要手动更新网站,只是建立在本地计算机上的网站创建更新的.dll文件并覆盖.dll文件在生产服务器上的bin文件夹。如果您的任何实际页面/ .aspx文件的源/ HTML已被修改,那么您还需要复制它们。

步骤:

  1. 构建网站与本地本地编译的.dll
  2. 复制任何.aspx页到HTML /来源改性
生产服务器
  • 覆盖生产服务器的.dll
  • +0

    这是我的问题,我如何减少构建时间?我总是在本地构建站点并在生产服务器上部署dll – Ankit

    +0

    当然,在本地构建它不需要几个小时?我的建议是在本地构建并手动复制所需文件,而不是使用“发布”方法。 – Tanner