问题标签 [razorgenerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8769 浏览

razor - Razor Generator:如何使用在库中编译的视图作为主 mvc 项目中定义的主视图的部分视图

我们有一个 ASP.NET MVC 4 应用程序,其中包含大约 3000 个视图。我们决定将这组视图拆分为单独的 DLL,并使用 RazorGenerator 对其进行编译。我们在主 MVC 项目中只保留 main _Layout.cshtml 和相关文件。

我们无法从 DLL 加载部分视图以及主 MVC 项目中的主视图。详细说明如下。

已经做了什么:

  1. 视图成功编译成 DLL(我已经确认它们在二进制文件中)

  2. 使用 Global.asax.cs 中 Application_Start 中的以下代码为每个包含视图的 DLL 创建和注册 PrecompiledMvc​​Engine 对象:

.

什么不起作用:

我无法加载在主 MVC 项目(例如 _Layout.cshtml)中定义的视图以及在其中一个库(例如 Partial.cshtml)中定义的部分视图。我在控制器的操作中使用以下代码来告诉 MVC 框架我请求了哪个视图:

错误消息显示:未找到视图“~/Views/Partial.cshtml”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/Partial.cshtml ~/Views/Shared/_Layout.cshtml

当我尝试通过指定以下任一方式单独加载视图时:

或者

,找到正确的视图。但是我需要将它们一起加载。当我在主 MVC 项目中拥有所有必需的 .cshtml 文件时,该代码有效。

请注意,已编译 DLL 中的视图具有 PageVirtualPathAttribute,其路径与控制器操作中指定的路径相同,例如:

综上所述,问题是如何用另一个项目中定义的部分编译视图调用存储在主 MVC 项目中的主视图?

0 投票
1 回答
1542 浏览

asp.net-mvc-3 - 为什么预编译我的 ASP .NET MVC 项目并没有提高我的首次访问速度?

我尝试了两件事。一种是使用 aspnet_compiler 预编译我的 ASP.NET MVC 3 项目,另一种是在项目中使用 RazorGenerator 以允许编译视图。使用这两种方法,我仍然看到我网站中的页面必须在第一次访问时进行编译。我看到 csc.exe 在第一次访问时在服务器上运行,并且下次不会发生。为什么这些预编译步骤不能阻止这种情况,从而让我有更快的第一次访问?

0 投票
1 回答
942 浏览

asp.net-mvc-3 - MVC-3 找不到预编译的视图

我有一个常见的 MVC3 项目,其中有一些使用 RazorGenerator 编译到程序集中的视图。我已经确认这些类出现在生成的 DLL 中。我从另一个 MVC3 项目中引用了这个项目。当我尝试在通用 MVC 项目中使用视图时(CommonMvcProject.Views.Shared例如,视图的命名空间是 )...

...我收到一个错误:

未找到部分视图“ViewFromCommonMVCProject”或没有视图引擎支持搜索到的位置。

我不想使用物理视图,我想在通用 MVC 项目的程序集中使用预编译视图。如何配置此项目以在通用程序集中进行搜索?

0 投票
2 回答
207 浏览

asp.net-mvc-3 - VS2010 在 RazorGeneratorMvcStart 中添加断点

当我尝试调试我的 MVC 3 应用程序时,会在静态类中自动添加一个断点RazorGeneratorMvcStart

在该行的静态Start()方法中:

ViewEngines.Engines.Insert(0, engine);

当我在运行期间删除断点时,它仍然会回来,并且大多数页面在每次调用时都会多次点击此方法。

有没有办法可以防止添加此断点或导致此处添加断点的原因。我检查了文件,它没有在我能找到的任何地方显示断点。但是每次我点击视图时,它都会添加到课程中。不调试时文件不显示符号。我也尝试在那里添加然后删除断点,但这没有效果,下次视图命中时会在此处添加断点。

如果我禁用断点并在 VS 中打开文件,它似乎绕过了该操作。但是下一个动作调用断点返回。

0 投票
1 回答
1383 浏览

asp.net-mvc-3 - 使用 PrecompiledMvc​​Engine FindView 抛出 InvalidOperationException 并查找 View cshtml 文件

当MVCInvalidOperationException控制器尝试FindView使用PrecompiledMvcEngine.

在具有 VS2012、MVC4 并部署到 IIS 的机器上使用

0 投票
0 回答
254 浏览

asp.net-mvc - MVC 3 应用程序将视图转换为 dll

我正在 mvc3 razor 中开发一个应用程序,它将部署在多个共享主机帐户中。我想将应用程序编译成dll,就像在asp.net aspx文件中一样,上面写着“这是预编译工具生成的标记文件,不应删除!” 剃刀视图如何实现这一点。

0 投票
1 回答
302 浏览

servicestack - 是否可以在设计时编译 Servicestack Razor Pages

我正在构建一个包含许多插件的应用程序。该应用程序和插件围绕服务堆栈框架构建,包括剃刀引擎。

我遇到的一个问题是我必须将所有文件设置为始终复制,最终的应用程序最终会得到来自所有插件的文件的混搭。它可以工作,但不容易添加/删除插件 - 最终我想在应用程序运行时执行此操作。

我发现razorgenerator看起来像是解决了我的部分问题,并将微软剃须刀页面预编译到 dll 中。有人对服务堆栈剃刀文件做过类似的事情吗?

0 投票
2 回答
1215 浏览

.net - 具有预编译视图的助手

我正在使用RazorGenerator预编译我的视图。我还想使用 Global Razor 助手(在 App_Code 目录中的 cshtml 文件中定义)。但是编译抛出以下错误

当前上下文中不存在名称“KarbonHelper”

然而,智能感知似乎检测到了辅助方法。我已经按照以下博客Razor Precompilation 合并了 Razor 预编译

我还注意到,帮助文件 KarbonHelper.cshtml 实际上已预编译为预期位置的 .cs 文件

欢迎任何想法或建议

0 投票
1 回答
3912 浏览

asp.net - Razor Generator:这是准确的吗?

我最近询问了我目前工作地点的前首席开发人员,为什么他选择使用Razor 生成器将我们的视图预编译到单独的程序集中。

他在下面提出了一些声明,但我似乎无法在网络上找到任何Razor Generator配置文件和/或指标来支持该声明(快 10-100 倍),和/或,如果IIS7/ASP.NET确实如此关于预编译与运行时编译的视图的幕后以及它们的好处或缺乏。

谁能指出我正确的方向?还是评论?

在我看来(就启动时间而言)只需为站点设置 IIS就可以平衡使用Razor Generatorautostart = true进行预编译的任何好处。以下是他的声明:

为什么我们使用 Razor 生成器来预编译我们的视图以及为什么将它们放在单独的程序集中?

第一个是简单的编译时错误检查。有了这么多视图,这似乎是避免生产错误的好方法。不得不重新编译才能看到我承认的观点的变化有点令人沮丧,但(在我看来)知道你有更多的错误检查是完全值得的。

第二个是当视图没有在项目中编译时,它们会在运行时编译,然后那些编译的表示必须存储在 ram 中。有时,如果不定期访问它们(大多数视图都是这种情况,因为有这么多),那些存储的编译版本会被丢弃并收集垃圾以节省内存。因此,除了像 gaf.com 这样的网站中最常访问的视图之外,所有视图最终都会在每次访问时重新编译。但是如果你把它们放在一个项目中,编译的版本只需要从 dll 加载,如果它还没有在内存中(是的,代码也可以被垃圾收集,但不那么频繁)。从 dll 加载它的速度要快 10 到 100 倍(这是来自 Razor Generator 项目的站点 - 我自己没有验证它,但听起来很合理)。

0 投票
0 回答
1918 浏览

msbuild - RazorGenerator.MsBuild 设置 - 我在这里做错了什么?

关于如何设置包 RazorGenerator.MsBuild (RGB)以预编译我的视图的说明对我来说有些模糊。我遇到了一些问题,我可以使用一些帮助:

说明可在此处找到:说明

到目前为止我做了什么,发生了什么......

  1. 我已经通过 NuGet 命令将 RGB 安装到我的 Web 应用程序中,没有任何错误(如果我从“管理 NuGet 包”用户界面尝试此操作,然后单击 RGB 的“管理”按钮,我会收到以下错误:“ RazorGenerator.MsBuld 无法安装,因为它与解决方案中的任何项目都不兼容。该包不针对任何框架“ - 这对我来说似乎是个意外)。
  2. 我在 obj\CodeGen 中没有收到任何输出。

注意:我已将“NuGet 包还原”设置为 true,但这似乎无助于自动设置,如标题“在没有 NuGet 包还原的情况下启用目标”(例如目标和设置)下的说明中指定的。

我想我的问题是:如何(以及在​​哪些文件中?/UI?)按照设置 RGB 的说明在我的网络应用程序中设置以下内容?有些东西告诉我这些没有设置,我也无法在我的解决方案或 Web 应用程序项目文件中找到它们:

a) 在您的应用程序中导入 RazorGenerator.target 文件

b) 将属性添加到您的项目

编辑:

找到将上述设置放在哪里 - 在我的 Web 应用程序项目文件中,只需将 RazorGenerator.MsBuild.1.5 更改为 RazorGenerator.MsBuild.1.5.3.0(我的版本)。

现在在创建的命名空间上获取 RGB 生成的.cs文件的编译器错误,例如,这是由 RGB 版本 1.5.3.0 生成的:

并产生以下编译器错误:

RGB 版本 1.5.0.0 生成与以下相同的命名空间:

命名空间 GAFCOM.Web.Views.Simple.Roofing.Residential.Promotions._12_06_15_Better_Homes_And_Gardens(注意最后一个命名空间段之前的下划线)。

如果我在当前项目中更改命名空间以包含下划线(如上),它将编译干净。

有什么想法吗?