技术开发 频道

技巧和诀窍;在VS 2005里优化ASP.NET 2.0Web项


【IT168技术文档】

  这个帖子讨论在viuasudio2005中开发we项目时,如何优化其buid性能。
  如果你正受缓慢buid的煎熬,或者想知道怎么提高buid速度,请继续读下去。vs2005网站项目和vs2005we应用项目简介#160vs2005支持两种项目模型:vs2005网站项目(wesieprojec)和vs2005we应用项目(weaicaioprojec)。
  vs2005网站项目是vs2005刚发行时内置的项目模型,它提供了一个基于无项目(rojec-e)的模型来开发we应用,该模型使用了asp.net2.0在运行时使用的同个动态编译系统。而vs2005we应用项目则是今春早些时候发布的一个完全支持的可下载项目模型,它提供了一个使用了基于msbuid的uid系统的项目模型,可以把一个项目中的所有编码编译成单个程序集(与vs2003类似,但又少了vs2003we项目中涉及fropae服务器扩展,iis依赖性,以及其他问题的种种限制)。想进一步了解vs2005we应用项目的话,请参考我发表在h://werojec.cou.com网站上的系列教程。
  注意,对vs2005we应用项目的支持将包含在vs2005sp1中,这样以后就不用另外下载了。vs2005网站项目和vs2005we应用项目两个模型在将来的viuasudio版本中将会继续被完全支持。我们发现,有些人喜欢一个模型,憎恶另外一个模型,反之亦然。从特性(feaure)的角度看,没有dquo非常好的的模型选择rdquo这一说,完全取决于你个人的爱好和你们的团队协作机制(eamdyamic)来决定哪个模型最适于你。譬如,许多的企业开发人员喜欢vs2005we应用项目模型,因为它提供了更多的uid控制和团队集成支持,而许多的we开发人员则喜欢vs2005网站项目模型,因为它的dquo即存即行(juhiave)rdquo的动态模型和灵活性。
  有2篇文章,你也许会发现在决定采用哪个模型时有用,这篇msdn上的白皮书内含对这两个模型的比较,而ricksrah的《we应用项目和we部署项目发布了》一文对不同选项的利弊做了一个很好的讨论。想从vs2005网站项目模型迁移到vs2005we应用项目模型的话,请按这个c#或vb版的教程里示范的步骤做。那么哪个项目模型buid起来快些呢?在对项目做fuuid时,vs2005we应用项目模型编译起项目来会比vs2005网站项目模型快很多。fuuid是指对项目里的每一个类和网页要做编译或重新编译的情形,要么因为你在uid菜单里选了reuid,要么因为你修改了一个依赖的类库项目或者/a_code子目录里的编码,然后点击了uid或按了cr-hif-来编译解决方案。在这些dquo全部重新编译(fureuid)rdquo的情形下,vs2005we应用项目编译比vs2005网站项目快很多有几个原因。主要原因是,跟在vs2003中一样,vs2005we应用项目只编译你的页面的后台编码(code-ehid)以及你项目中的其他类文件。
  它既不分析也不编译你的.ax页面内的内容/控件/行内(iie)编码,这意味着,它不需要are那些文件。坏处是,这也意味着,在编译过程中,它不会检查那些文件是否有错(而vs2005网站项目则会识别其中的任何错误)。好处是,这使得编译极其快。那么,这是否意味着你总是应该在大型项目的情形下使用vs2005we应用项目模型来得到最快的uid时间呢?不,不一定。vs2005网站项目的一个很好的特性是对dquo按需编译(odemadcomiaio)rdquo的支持。这在你对所依赖的文件做了变化(deedechae)后,让你避免常规地重新编译整个项目,而是只需要对那些你正在编辑的页面做重新编译,而且这个编译是按需进行的。这会给你的解决方案带来uid性能上的极大改进,而且也会在开发非常大的项目时给予你非常好的工作流程。如果你想要在保持网站模型灵活性的同时改进uid性能,我强烈推荐使用这个模型。
  下面几节提供了针对vs2005网站项目模型和vs2005we应用项目模型优化技术方面的特定教程,包括我上面描述的dquo按需编译(odemadcomiaio)rdquouid选项。
  优化vs2005网站项目buid时间的特定技巧和诀窍在使用vs2005网站项目模型时,按下述步骤做的话,你就可以极大地改进uid性能:1)确认你没有遭受我称之为dquo程序集引用冲突(dueiaemyreferece)rdquo的问题。我在这个博客帖子里描述了如何发觉和解决这个问题。如果你曾经在uid时看到编译过程好像在dquo正验证网站(vaidaiwesie)rdquo这个编译阶段停顿了(意即,输出窗口里超过几秒钟都没有输出)的话,你非常可能是遇上这个问题了。使用上述这个博客帖子里概述的技术来解决这个问题。2)把在/a_code子目录里的文件的数目保持在很小的范围。
  如果你最后在这个目录里有一大堆类文件的话,我建议在你的vs解决方案里另建一个类库项目,把这些类移到这个类库项目里去,因为类库项目比/a_code子目录里的类编译快多了。如果在/a_code目录里只有小数量的文件的话,这通常不是个问题,但你有很多目录或数十个文件,那么把这些文件移到一个单独的类库项目里,然后在你的网站项目里引用这个类库项目,你将能改进uid速度。另一个需要知道的事情是,每次你在vshtml设计器里从源码视图转换到设计视图时,设计器会在设计表面加载之前引起/a_code目录的编译。原因是,这样你就可以在设计器里使用在/a_code目录里定义的控件。
  如果你没有/a_code目录,或者里面没几个文件,那么页面设计器加载起来就会极快,因为它不需要先做很大的编译工作。3)在你的网站项目中激活dquo按需编译(o-demadcomiaio)rdquo。右击你的网站项目,打开项目属性页。在左边点击buid区,打开项目的uid设置。在设置里把dquof5启动操作(f5saracio)rdquo从dquobuidwesie(网站)rdquo改成dquobuidpae(页面)rdquo或dquonobuid(不buid)rdquo选项。然后,确认清除了dquo把网站当作解决方案一部分来buid(buidweieaarofouio)rdquo复选框:在你点击ok接受设置改动后,你将处于dquo按需编译rdquo模式下。
  这意味着,在上面的对话框你选了dquobuidpae(页面)rdquo的话,你编辑了一个页面,按f5(以调试模式运行)或cr-f5(以非调试模式运行)时,解决方案将跟以前一样,编译所有的类库项目,然后编译/a_code目录以及goa.aax文件,然后,不再对网站里所有的页面做重新核实,而是只核实你手头的网页,以及这个页面引用的任何用户控件。
  在含有大量网页的大型甚至中型项目中,这很明显会带来极大的性能改观。注意,asp.net会自动重新编译你在运行时访问的任何其他页面或控件,这样,你运行的应用程序用的总是最新的编码,而不必担心老的编码在运行。你也可以选dquonobuidrdquo,省略ide里ae级的验证,很明显会进一步提高整个过程的uid速度。
0
相关文章