ASP.NET 中有一个模式 - 每当有一段标记生成代码时(例如 WebForms 或 中的
文件),这些文件在运行时动态编译。 aspnet_compiler 将为它们生成另一个程序集,该程序集引用您的代码隐藏程序集。.aspx
/.ascx
文件) MVC3 中的 >.cshtml
这种方法对我来说似乎很尴尬,我不明白为什么它还没有停止。更好的方法(在我看来)就像在 Winforms 或资源文件中一样 - 您有 .whatever
文件,然后是 .whatever.desginer.cs
文件。该设计器文件是在您键入时在运行时创建的。当您编译时,编译器不会关心您的 .whatever
文件,它只是采用 .whatever.designer.cs
文件并生成单个实体程序集。
这提供了几个好处:
- 您可以相互继承表单,类似于 Windows 表单;
- 您始终可以查看正在生成的代码,可能会调整标记以生成更好的代码;
- 您可以轻松实例化表单的强类型实例;
我从动态编译中看到的唯一好处是
- 您可以随时更改标记文件,无需重新编译应用。
说实话,我经常想要前三个好处之一,但从来不想要最后一个。重新编译应用程序以查看您的更改并不是什么大问题。特别是因为在使用代码隐藏时无论如何都必须这样做,而这将是您花费最多时间的地方。当您将应用程序交付给客户端时,您将其作为整体的预编译 block 交付。当您更新时,您会更新所有内容,而不仅仅是单个 .aspx
文件 - 没有意义。
那么……为什么会这样呢?我错过了什么?
最佳答案
听起来您指的是 ASP.Net 网站。 ASP.Net Web 应用程序类似于 ASP.Net 网站,但使用 .designer.cs 文件并生成单个程序集。
关于asp.net - 为什么 ASP.NET 页面(表单和 MVC)是动态编译的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5030233/