所以我在MVC 3 RTM应用程序上编辑了我的csproj文件以设置以下属性:
<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)
这应该导致我的视图在构建期间被编译,并在我的视图被破坏时强制构建错误.这是我做的唯一更改,但是,当我尝试构建应用程序时,出现以下错误:
在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.
如果我改回false,项目将成功编译并运行
以下是csproj文件中配置的构建任务(这些任务从未手动编辑,它们是由Visual Studio 2010添加的)
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target> -->
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?如何正确配置MVC 3/Visual Studio 2010以在构建时验证我的视图?
我想知道是否可以编译Razor视图,比如基于WebForm的视图?
编译Razor视图甚至是有意义的,为什么有人想这样做呢?
我有一个ASP MVC 4项目.它起始于MVC 1,因此它使用旧式ASPX/ASCX视图.我希望在构建时编译视图,主要是为了获得编译时错误检查(而且,重要的是,要在Visual Studio中直接显示错误).我正在使用IIS Express作为调试服务器在Visual Studio Pro 2015中进行开发.
按照双方的MSDN,Haacked这里问题,比如这个我已经把我的.vbproj如下:
<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)
并且在我的.vbproj中创建了一个任务
<Target Name="BuildViews" Condition="'$(MvcBuildViews)'=='true'" AfterTargets="Build">
<Message Importance="normal" Text="Precompiling views" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但是,在尝试构建时,这会给我一个错误:
'/ temp'不是有效的IIS应用程序.
作为文件,它只引用ASPNETCOMPILER
我已经尝试了各种替代品作为VirtualPath - 我将项目配置为在dev中作为子目录/本地运行所以我尝试了,并且.vs文件夹中的配置中的站点名称没有任何作用.
我应该更改VirtualPath(如果是这样的话)或者是否有其他配置缺少临时工作?
编辑
此外,我得到运行命令行MSBuild相同的错误.对于我的实际生产系统,我有一个脚本,它使用命令行MSBuild进行构建,然后将构建的包移动到产品服务器并进行部署.因此,在构建时不会有IIS express(或IIS运行).您是否需要连接Web服务器才能编译视图?
编辑2
我对这里对virtulPath的需求以及与Web服务器的明显连接感到困惑.一些建议的解决方案涉及配置IIS.IIS Express(我用于调试)甚至在成功构建之后都不一定会运行,因为我理解它?无论如何,我的应用程序非常愉快地运行在虚拟目录中(在调试模式下为/ local),但使用它作为值不起作用.如果重要,这是我项目中.vs文件夹中applicationhost.config的相关部分(我尝试将相同的路径放入Documents/IIS Express中的applciationhost.config):
<site name="CarWeb-Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\adam.conway\Documents\My Web Sites\CarWeb-Site" />
</application>
<application path="/local" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" …Run Code Online (Sandbox Code Playgroud) Intellisense不适用于任何剃刀html标签.还在所有razor html标签中显示红线(@Html.TexBox, @Html.DropdownList MultiSelect etc)
Visual Studio错误窗口中显示三种类型错误.
错误#1:
无法从使用情况推断方法'System.Web.Mvc.Html.InputExtensions.TextBoxFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>,System.Collections.Generic.IDictionary)'的类型参数.尝试显式指定类型参数.
错误#2:
无法找到编译动态表达式所需的一种或多种类型.您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?
错误#3:
错误40无法从用法中推断出方法'System.Web.Mvc.Html.InputExtensions.HiddenFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'的类型参数.尝试显式指定类型参数.
有关更多信息,请参阅随附的链接.
我的任务是改进我们服务器上的 IIS 预加载和应用程序初始化。我已经在IIS上实现了应用程序初始化和应用程序预加载,但是在回收/重新启动应用程序池时仍然有很长的等待时间。我找到了一些我认为对我有帮助的有用链接,但我仍然没有获得预编译的 Razor 视图。我试图按照 RazorGenerator 的这篇文章进行操作,但它似乎不起作用。 http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html
我为上述文章采取的步骤
1) 从这里安装 VS 扩展:https : //marketplace.visualstudio.com/items?itemName=DavidEbbo.RazorGenerator
2)安装nuget包RazorGenerator.Mvc
3) 将剃刀视图上的输出更改为“无”,并将“自定义工具”设置为“RazorGenerator”,如上面文章所述。
我进行了清理和重建,但没有看到我的 cshtml 文件的 .cs 文件。
好的,那么我认为这不起作用,让我们尝试其他方法......让我们尝试一下 Visual Studio 开箱即用的预编译功能,正如这篇文章的答案所暗示的那样:在 asp .net mvc 中预编译 razor 视图5,但仍然没有预编译的 cshtml 文件。
我想要完成的是如何事先生成这些文件,以便 IIS 不必。这是回收/重启后 IIS 临时缓存文件的图像
这是浏览器请求应用程序后的图像
最后在发布时,我使用了 Visual Studio 预编译(对于上面的两个图像),所以我也附上了我的发布选项图像。
好的...现在我认为这是不可能的,但是然后在这里找到另一个 SO 解决方案:VS2013 不编译 ASP.NET MVC5 视图,但再次发布时,我仍然没有在我的应用程序的临时 IIS 缓存中看到 cshtml 文件的编译版本。是否有任何人都可以建议实际预编译我的应用程序中的 cshtml 文件的可靠解决方案,以便它们不会在第一个浏览器请求时生成?我什至在我的 web 配置中进行了应用程序初始化并安装了所需的 IIS 功能,甚至可以看到它确实向我的应用程序发出了“假”请求,但是 cshtml 文件不会根据该“假”请求进行编译。对不起,如果我附上了很多信息,但似乎我在这里问的每个问题我都没有提供我的实际问题...=(希望这个问题可以达到目的。谢谢!
更新
上面的最后一篇文章建议更改 csproj 文件,因此我也尝试过并附上该文件的屏幕截图。
以及文件底部的 Action
将“temp”更改为“/”也无济于事。
更新 2
因此,在周末离开计算机后,我今天早上注意到我选中了“允许预编译的站点可更新”。取消选中该值后,我开始在 …
asp.net-mvc ×5
razor ×3
c# ×2
asp.net ×1
compilation ×1
iis ×1
iis-express ×1
msbuild ×1
precompile ×1
vb.net ×1