ASP.NET MVC5 视图预编译】的更多相关文章

ASP.NET MVC5 视图预编译 ASP.NET MVC5 视图预编译   关于Razor视图及引擎原理,就不多说了. 这里通俗或者不恰当地说,cshtml视图文件是先编译成dll文件,再通过视图引擎“解析”成html输出到浏览器. 但mvc编译cshtml是动态编译的,并缓存起来. 它到底缓存到哪里了?请看园子里的蒋金楠<ASP.NET MVC的Razor引擎:View编译原理>一文 ! 相信不少人想过:能不能把视图进行预(提前)编译? 一.这样是否可能提升网站程序运行性能(当然,和缓存…
0x01 前言 ASP.NET Core在默认发布情况下,会启动预编译将试图编译成xx.Views.dll,也许在视图中打算修改一处很细小的地方我们需要再重新编译视图进行发布.下面我将从 ASP.NET Core 3 之前版本到 ASP.NET Core 3X 之后版本的一个配置列下下方供大家参考. 0x02 预编译 在ASP.Core中默认是为我们启动的预编译,默认系统会将视图编译进行预编译处理,最终会将编译好的视图生成一个DLL xx.Views.dll. 0x03 动态编译 动态编译也就是…
在平时使用.NET MVC中不乏有类似的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改,需要通过某种方法把视图模板编译到项目的dll中去. 但是VS并不提供razor的预编译,如果需要对razor预编译需要借助第三方工具:Razor Generator 源码:http://razorgenerator.codeplex.com/ 这里以VS2013为例 1,依次选择:工具---扩展和更新---左侧选择“联机”---搜索“RazorGenerator”,然后安装 2,对MVC项…
在.NET Core 2 Web API应用程序中,MS VS 2017中的发布到文件夹功能产生: <ProjectAssembly>.PrecompiledViews.dll <ProjectAssembly>.PrecompiledViews.pdb 解决方法: 编辑csproj文件来禁用预编译步骤: <PropertyGroup> <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish&…
1.安装NuGet包 Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 2.Startup.cs 配置 public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); } <PropertyGroup> <TargetFramework&g…
MVC Razor模板引擎中3个重要的方法:@RenderBody.@RenderPage.@RenderSection 1.@RenderBody 在Razor引擎中布局页面类似于asp.net中的母版页功能,视图的内容会和布局页面合并呈现. 当前视图内容会通过布局页面(Shared/_Layout.cshtml) 中的@RenderBody()方法呈现在标签之间. 默认布局页面设置: _ViewStart.cshtml @{ Layout = "~/Views/Shared/_Layout.…
Web开发中常常会有跨页面.跨站点.跨项目组的复用模块(界面),最常见的就是如下方所示的Web页面上用于显示登录或用户名的头部模块, 使用ASP.NET MVC开发中,常见的做法是写成部分视图,本文的目的则是进一步将这部分视图预编译成DLL, 这样就可以不直接暴露源码的提供复用组件,适合跨项目组的协作开发. 技术点 Razor Generator(Razor单文件生产器) RazorGenerator.Mvc(Razor视图预编译引擎) 步骤一:安装拓展,项目准备 首先,为VS安装Razor G…
继上周介绍了Razor之后,ASP.NET MVC 现在已有四种主要的视图引擎.其他三种引擎是Spark.NHaml和传统的ASPX文件模板.本文将大致介绍这四种引擎,并着重讨论新的Razor引 擎. ASPX风格的视图引擎可以追溯到遥远的ASP.使 用<%= %>和<%: %>语法的占位符在这类风格中占据了统治地位.随着时间的推移,ASPC控件被加入进来,之后是母版页(Master Page),但这同时也带来 了昂贵的页面生命周期. Spark,在Castle项目的MonoRai…
在前面一片文章:<.NET MVC4 Razor视图预编译(一)> 里面我采用的是PrecompiledMvcViewEngineContrib组件进行预编译视图的虚拟地址注册,但是这个组件还是存在少许的bug,如:页面单独定义Layout预编译后不会起作用,而且照旧会使用没有预编译的_ViewStart.cshtml里面定义的Layout 昨天在NPOI作者Tony的群(群号:78142590)里面经过大神老衣的指点,原来是我引用的第三方类库错了,应该引用:RazorGenerator.Mv…
asp.net mvc5视图中使用entitySet类型数据时提示以下错误 检查了一下引用,发现已经引用了System.Data.Linq了,可是还是一直提示出错, 后来发现还需要在Views文件夹下的web.config中加上程序集的引用 <system.web> <compilation> <assemblies> <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, Pub…
这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配置: 1)在 "dependencies" 中添加: "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final" 2)在"tools&quo…
标题:从零开始实现ASP.NET Core MVC的插件式开发(九) - 如何启用预编译视图 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/13992077.html 源代码:https://github.com/lamondlu/Mystique 适用版本:.NET Core 3.1, .NET 5 前景回顾 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图 从零开始…
早前一段时间,一位朋友在Q群里面找到我,说它按照<Linux.NET学习手记>的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象.当时费了一番周章才把问题解决.而最近一段时间,群里也有其他的朋友出现相同的问题,随着时间的推移,想必会有越来越多朋友会使用高版本的VS,于是我把当时的情况重现出来,并把解决办法记录下来. 像往常一样,我们创建了一个MVC4的项目. 然后添加了一个视图,默认的那个(/Home/Index),然后,再发布到Linux.N…
目录 系列文章 概述 添加视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 概述 在这一部分我们添加一个新的控制器HelloWorldController类,以便使用视图来向客户端展示HTML格式的响应结果. 我们将使用Razor视图引擎创建一个视图.Razor视图模板以.cshtml扩展名结尾,它提供了一种简洁的方式来创建HTML输出流.Razor视图大大减少了在书写视图模板文件时所需要输入的字符,提供了一个最快捷,最简便的编码方式. (注意:之前版本…
昨天在一个ASP.NET MVC项目中,一个预编译后的视图访问时总是报错: 未预编译文件,因此不能请求该文件(The file has not been pre-compiled, and cannot be requested) 而对应这个预编译视图的3个地方都正常: 1)内容为“这是预编译工具生成的标记文件,不应删除!”的.cshtml占位文件正常存在 2)对应的*.cshtml.7384d3d7.compiled文件正常 3)对应的App_Web_*.cshtml.7384d3d7.dll…
在这一章节我们可以修改HelloWorldController类,通过使用视图模板来封装处理产生给客户端的HTML响应. 我们将使用Razor View engine来创建视图文件.基于Razor的视图模板有一个.cshtml后缀,并且提供了一个使用C#代码创建HTML输出的优雅的方式.当你编写视图模板的时候Razor减少了你所需字符串和点击鼠标的次数,并且实现了快速,流畅的编码工作流程. 在这个controller类中,当前的Index方法返回了一个hard-coded形式消息的字符串.修改这…
前言 本篇博文主要介绍ASP.NET MVC中的三个核心元素:控制器.视图与模型,以下思维导图描述了本文的主要内容. 控制器 控制器简介 在介绍控制器之前,简单的介绍一下MVC工作原理:URL告知路由机制该使用哪个控制器(Controller),调用该控制器中的哪个方法(Action),并为该方法提供需要的参数.控制器响应用户的输入,在响应时修改模型(Model),并决定使用哪个视图(View),并对该视图进行渲染. 注意:MVC模式提供的是方法调用结果,而不是动态生成的页面. 以上内容对于初学…
在asp.net中,编译可以分为:动态编译Dynamical Compilation和预编译(Precompilation). 动态编译 深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation) 预编译 深入剖析ASP.NET的编译原理之二:预编译(Precompilation) 比如vs2013发布站点的时候,可以选择预编译,生成单独文件. 发布后,你可以看到bin目录下的文件…
参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视图本身并不被访问,浏览器,并不能直接指向一个视图并渲染它.相反视图被控制器渲染,因为控制器提供了渲染所需要的数据. 一般情况下,控制器需要向视图提供一些信息,所以这会传递一个数据转移对象,叫做模型.完成这一过程需要两部分操作,其中一个是检查由控制器提交的模型对象,另一个是将其内容转化为HTML格式. 3.2…
ASP.NET 预编译概述 https://msdn.microsoft.com/zh-cn/library/bb398860%28v=VS.90%29.aspx 如何:预编译 ASP.NET 网站以进行部署 https://msdn.microsoft.com/zh-cn/library/ms227976%28v=vs.90%29.aspx ASP.NET 编译工具 (Aspnet_compiler.exe) https://msdn.microsoft.com/zh-cn/library/m…
概述 在 Web 服务器上,既可以部署源文件,也可以部署编译后程序集. 若部署源文件,则当用户访问时,Web 应用程序会被动态编译,并缓存该程序集,以便下次访问. 否则,若部署程序集,Web 应用程序能直接使用. 动态编译 本文针对 VS 2008.Web 应用程序要想为请求提供服务,ASP.NET 必须首先分析 Web 应用程序的代码,并将其编译成一个或多个程序集.当编译代码时,会将代码编译为 Microsoft 中间语言(MSIL,与具体编程语言和 CPU 无关的语言).运行时,MSIL 将…
在去年一次项目上线时发现部署的站点首次访问跟回收后响应特别慢.(使用的是vs工具预编译的方式发布),在随后找到解决办法是通过命令预编译Asp.net 网站,成功解决站点响应在毫秒级别. 预编译 ASP.NET 网站 预编译 ASP.NET 网站可缩短用户的初始响应时间,因为页在第一次被请求时无需编译.这对于经常更新的大型网站尤其有用. https://msdn.microsoft.com/zh-cn/library/ms227972(VS.80).aspx 微软介绍 使用说明打开cmd命令 C:…
ASP.NET 编译工具 (Aspnet_compiler.exe) 官方说明 新建bat文件   @echo off   CD /d C:\Windows\Microsoft.NET\Framework\v2.0.50727   aspnet_compiler -p E:\wwwroot\站点主目录 -v /   echo 命令执行成功!   pause 请注意,上面的v2.0.50727代表项目的.NET版本,可根据项目版本替换成以下版本 v2.0.50727 v3.0 v3.5 v4.0.…
为什么要用预编译? 博客园博客程序中.aspx和.ascx文件总共加起来有3000多个(博客模板中有大量的.ascx文件).如果使用动态编译,每次只要更新bin文件夹中的任何一个dll文件,动态编译至少需要5分钟(访问量越高,所需的编译时间越长),而在动态编译期间网站访问速度极慢,几乎就是无法正常访问.这样,每次更新程序成为了一种痛苦,只能安排在深夜或一大早. 面对这样的情况,只能选择预编译. 预编译的原理是什么? 请阅读Artech写的深入剖析ASP.NET的编译原理之二:预编译(Precom…
目录 系列文章 概述 布局视图 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则 [Asp.net M…
最近遇到一个奇葩的问题,在vs2013下cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等),在视图中也没有智能提示了,用@model声明视图的model类型也不可以,直接复制过去还会把model类给自动变成小写!!!.这个问题纠结了我一晚上. 网上出现的资料目前无非有以下几种方法(试了一下,都不管用): 1.检查项目根目录的web.config和Views文件下的web.config的mvc和razor版本信息是否一致. 2.重新新建一个mvc项目把…
预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microsoft.NET\Framework\version 运行 aspnet_compiler 命令,在命令提示符下键入以下内容,同时指定源(作为虚拟路径或物理路径指定).编译网站的目标文件夹以及 -u 开关(此开关表示您想编译站点以进行部署和更新). aspnet_compiler -p physical…
目录 概述 实现信息的明细视图 实现信息的编辑视图 实现信息的删除视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 [Asp.net MVC]Asp.net MVC5系列…
转自:如何:预编译 ASP.NET 网站 Visual Studio 2005   预编译 ASP.NET 网站可缩短用户的初始响应时间,因为页在第一次被请求时无需编译.这对于经常更新的大型网站尤其有用. 本主题中的过程使用 ASP.NET 编译工具 (Aspnet_compiler.exe) 的开关和参数.有关此工具的更多信息,请参见ASP.NET 编译工具 (Aspnet_compiler.exe). 有关预编译的更多信息,请参见 ASP.NET 网站预编译. 就地预编译 ASP.NET 网…
本来下写篇总结,但感觉自己语言不知道怎么组织.就算了. aspnet_compiler的问题: 一开始 aspnet_compiler -v  \   -p  F:  E: -fixednames error ASPRUNTIME: 目标目录不是空的.请手动删除该目录,或选择其他目标目录. aspnet_compiler -v  \  -f  -p   F:  E: -fixednames error ASPRUNTIME: 目标目录非空.并且似乎包含以前编译的应用程序.请手动删除该目录,或选择…