首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >asp.net web forms之动态编译

asp.net web forms之动态编译

作者头像
小明爱学习
发布2019-01-07 13:24:05
1.8K0
发布2019-01-07 13:24:05
举报
文章被收录于专栏:smh的技术文章smh的技术文章

我们在使用asp.net进行网站开始,都会aspx页面。

在客户端请求aspx页面。将动态编译aspx页面和aspx.cs代码文件。第一次编译之后。将会缓存编译后的资源,而之后的请求,

就读取缓存,不在编译。这个是大家都知道的。

大家在开发的时候都会使用dll,dll就是已经编译好的,都放在bin文件夹下。

那么动态编译的aspx页面和cs代码文件编译后的dll放在那里呢?

放在服务器上,当编译web程序时,编译的代码会放在C:\Windows\Microsoft.NET\Framework\版本号\Temporary ASP.NET Files\root\ 这个目录下的某个文件夹中。

 更改时重新编译

  更改时重新编译,当我们在本机更改了一个aspx页面。拷贝到服务器上。这就会导致重新编译,下面为msdn上的解释。

对动态编译文件的任何更改都会自动使文件的缓存编译程序集无效,并触发所有受影响的资源的重新编译。下次向代码发出请求时,ASP.NET 会识别该代码是否已更改,并重新编译 Web 应用程序的受影响的资源。此系统使您能够用最少的编译处理开销快速开发应用程序。(请注意,根据对资源进行的更改,结果的范围可能从重新编译单个页面到重新编译整个网站。)

重新编译顶级项 这里要给喜欢经常更改dll的朋友提个醒,当我们要更改dll的代码的时候。比如项目引用了某个dll,现在这个dll需要修改,我们打开vs重新更改这个类库,然后得到了最新的dll,再把新dll拷贝到服务器上,这里dll属于依赖项。如果更改了依赖项,那么在访问程序时,就会重新编译顶级。下面请看msdn上的说明:

在第一次对应用程序发出请求时,ASP.NET 按特定顺序编译文件。要编译的第一批项称为顶级项。在第一次请求之后,仅当依赖项更改时才会重新编译顶级项。

顶级项包括 App_GlobalResources 文件夹、App_WebResources 文件夹、配置文件属性、App_Code 文件夹和 Global.asax 文件。编译顶级项之后,ASP.NET 将编译其他项。这些项包括 App_LocalResources 文件夹、单个 ASP.NET 页(.aspx 文件)、ASP.NET 用户控件(.ascx 文件)、ASP.NET HTTP 处理程序(.ashx 文件)和 ASP.NET HTTP 模块(.asmx 文件),以及主题、母版页和其他源文件。

最后,其实无论怎么样,程序都要进行最后一次编译,大家都知道,.net会将代码编译成IL代码,再有CLR把IL代码编译成机器代码执行。所以最后一步编译成机器代码是肯定逃不掉的。我们上面说的只是第一步编译成IL代码的。

最后大家可以去做测试:在本地用vs新建一个web程序,然后C:\Windows\Microsoft.NET\Framework\版本号\Temporary ASP.NET Files到这个文件夹。然后你运行网站,你可以看到Temporary ASP.NET Files文件夹的修改时间就会改变。也可以把root下文件全部删除,当你在一次访问站点的时候。你会发现又会多一个文件夹。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档