答案 0 :(得分:4)
Razor Generator背后的目的是预先编译你的剃刀视图,将你的cshtml文件中的标记转换为在呈现视图时执行的C#代码。
如果您将该视图的自定义工具属性设置为RazorGenerator,则在设计时可能会发生这种情况。或者,它可以通过集成Razor Generator MSBuild目标在构建时发生。
正如您所提到的,如果没有Razor Generator,您通常会将视图的构建操作设置为“内容”。在首次请求视图时,在运行时解析标记,并在动态生成的程序集中提供已编译的视图。如果使用Razor Generator,则无需复制标记,因为已编译的视图已经是Web程序集的一部分。这就是您可以在视图中将构建操作设置为“无”的原因。
其他细节:
Razor Generator通过将自己的PrecompiledMvcEngine
添加到ViewEngines
的集合来扩展ASP.NET MVC。这用于在请求时查找已编译的视图。
PrecompiledMvcEngine
有一些属性,如果设置,将让引擎检查磁盘上是否存在视图,如果它比它在预编译视图中的更新,则使用它。部件。这在设计时非常有用,因此您可以在不重建所有内容的情况下查看对视图所做的更改。
答案 1 :(得分:0)
根据我的理解,RazorGenerator会创建一个可以在视图中使用的Html帮助程序。 HtmlHelper被编译为具有扩展方法的类。不应发布它所基于的视图,因为您不应该直接在项目中使用它。因此,视图应该将构建操作设置为none,完全如快速入门中所述。
快速入门中的第3步说明了如何使用创建的Html帮助程序:
嵌套文件将与您的项目一起编译,并且可以 引用为常规助手。例如
Html.WriteSpan("Hello world")