Ami*_*ich 10 c# asp.net compiler-construction asp.net-mvc
我正在使用Asp.net Mvc,我想知道为什么我不需要在cshtml文件中更新.net代码时编译我的项目?现在,如果我们谈论html\css更新,那么我清楚地理解为什么简单的刷新就足够了,但是在这些情况下.net代码如何动态编译?
让我说我有一个视图,我想添加一些c#代码,像Datetime.Now.ToString();
现在我通常可以添加这行代码到我的cshtml文件,保存文件,刷新页面,看到结果而不编译.
如果我通过向我的模型中添加属性来"按书"执行相同的操作,Datetime.Now.ToString()在我的控制器中分配并简单地渲染新的var我将需要编译我的代码以便查看更改.
这个神奇的工作原理如何?如果它如此简单,为什么不能用.cs文件呢?
Ps同样的问题与asp.net应用程序和aspx\ascx页面相关.
Ali*_*eza 10
.cshtml 文件将被及时编译,即当请求到达那些页面时.
但是,控制器已预编译并存储到项目的DLL文件中.
决定使用哪一个取决于您的需求.预编译可以缩短响应时间(因为您之前编译过代码),但即时编译为您提供了灵活性.
ASP.NET基础结构的一部分是ASP.NET编译器.它负责将声明性资源(*.aspx,*.ascx,*.cshtml等)编译为可执行代码.
没有魔力,运行时决定何时运行编译器(例如,自上次运行以来资源已被更改)然后调用编译器从声明性代码中创建命令性代码(例如,*.aspx被编译为*的.cs).然后它调用常规语言编译器来获取包含CIL的*.dll.
第一次访问资源需要一些时间,提前预编译所有声明性资源可能很方便.
概述:
http://msdn.microsoft.com/en-us/library/vstudio/ms178466(v=vs.100).aspx
预编译:
http://msdn.microsoft.com/en-us/library/aa983464(v=vs.110).aspx
| 归档时间: |
|
| 查看次数: |
6126 次 |
| 最近记录: |