【发布时间】:2011-08-26 09:31:43
【问题描述】:
我在非 MVC 环境中使用 Razor 引擎 (razorengine.codeplex.com)。我编译存储在文件中的模板并使用@inherits 来支持智能感知。
- RazorEngine 组件
- 自定义程序集 - 引用 RazorEngine,包含
View<>并将View<>设置为基类 - Web 应用程序 - 引用 RazorEngine、自定义程序集,包含 .cshtml 模板文件
所有 cshtml 文件都有以下 @inherits 指令:
@inherits View<SomeModel>
抛出一个错误:
没有找到命名空间视图的类型,是否缺少程序集引用?
我的 web.config 包含以下条目:
<add namespace="CustomAssembly.NamespaceContainingViewClass" />
我认为这与另一个条目<assemblies> 有关,其中没有提到我的CustomAssembly。是这样吗?我可以使用包含在另一个程序集中的自定义基类进行编译吗?
附言我无法检索程序集的强名称,因为我的自定义程序集引用了一个也没有强名称的 3d 方程序集...
堆栈跟踪:
at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.TemplateService.CreateTemplate(String template, Type modelType)
at RazorEngine.Templating.TemplateService.GetTemplate(String template, Type modelType, String name)
at RazorEngine.Templating.TemplateService.Compile(String template, Type modelType, String name)
at RazorEngine.Razor.Compile(String template, Type modelType, String name)
【问题讨论】:
-
这个错误在哪里抛出?堆栈跟踪是什么?
-
当我使用参数调用
Razor.Compile时抛出错误(其中一个是包含@inherits的模板字符串)。我已将堆栈跟踪添加到上面的问题中。 -
当您在@inherits 之后有完全限定名称时是否有效。可能是 MVC 做了一些额外的工作来让命名空间工作。您是否也尝试使用 @using MyNamespace 在模板本身中添加命名空间;
-
是的,它确实适用于全名。我个人认为还需要提供
<assemblies>条目,但是由于命名很严格,这是不可能的。我没有可提供的 publickeytoken...
标签: .net razor razorengine