在用Microsoft Visual Studio 2005开发ASP.NET网站时,当你开发完后,发布网站时,会生成一个PrecompiledApp.config文件,该文件内容如下:
<precompiledApp version="2" updatable="true"/>
这个文件是不能删除的,原因网友都有解释.现在想就PrecompiledApp.config文件还和Global.asax 文件中的事件有关联做一简单的分析.
在我们的多网站的设计方式中我们会根据不同的部署来设置多个webconfig文件,每个文件都有自己的独立的设置信息,因此我们可能会在启动应用时加载不同的webconfig,此时我们需要在global文件中在做处理.
例:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//ApplicationConfiguration.ApplicationStart(this.Context.Server.MapPath(this.Context.Request.ApplicationPath), ApplicationEnum.Site.enterprise);
}
这个时候没有PrecompiledApp.config文件,此段代码是不会执行的.
一下部分是部分网友的描述:
----------------------------------------------------------------------------------------------------------------------------------
不能删除.PrecompiledApp.config 文件用于跟踪应用程序的部署方式,以及 ASP.NET 是否需要在请求时编译任何文件。
删除之后一些应用程序级的东西将无法使用.
---------------------------------------------------------------------
ASP.NET2.0的编译功能。预编译有三种方式
一、允许更新UI预编译
也就是只编译cs的文件,像aspx的页面文件是不编译的。
二、不允许更新UI预编译
也就是编译的时候不止编译cs文件连aspx页面文件和主题文件都编译。当然web.config配置文件和图片了什么的是不编译的。
三、强命名预编译
这个不止编译源文件而且对编译后的文件进行强命名,这样他们不能随便替换你的dll文件。
完成这个模块时我首先考虑前两种,因为用第三种有点小题大做故作高深之意。我就在前两种中徘徊,于是我就一直反复的测试前两种方法编译后的文件在客户的开发中配合整体测试的便捷性。我想给客户最少最简单的文件,所以在做第二种方法的单独测试中,我删除了PrecompiledApp.config文件,然后让IIS目录指向编译后的文件,结果显示“这是预编译工具生成的标记文件,不应被删除!”于是我就把PrecompiledApp.config文件加上,结果才能正常显示。其实在发现是PrecompiledApp.config的影响的时候并不这么简单因为IIS有缓存,这个过程中你必须重启IIS。最后一查才知道该文件是一个标记,它通知ASP.NET运行库该应用程序已经被预编译,所以没有他用第二种方法程序是不能正常显示的。