Visual Studio中的Intellisense错误

时间:2012-12-05 02:47:20

标签: c# asp.net-mvc razor asp.net-mvc-4

我已经制作了一个模块化应用程序,每个模块都是一个单独的项目,它们与MVC领域的外观相似。

我实现了自定义WebViewPage,但即使将指针从web.config移回默认值,智能感知功能仍然无效。

在我的剃刀视图的第一行:

@model IEnumerable<Module2.Models.TestModel>

我收到警告:

  

xxx \ Module2 \ Views \ Shared \ TestModelTable.cshtml:ASP.NET运行时错误:预应用程序启动初始化方法运行类型   WebActivator.ActivationManager引发了以下异常   错误消息:目标抛出了异常   调用.. xxx \ Module2 \ Views \ Shared \ TestModelTable.cshtml

错误:

  

当前上下文中不存在名称“model”xxx \ Module2 \ Views \ Shared \ TestModelTable.cshtml

然后每次我尝试引用模型时都会出现错误:

  

方法'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper)的类型参数,   System.Linq.Expressions.Expression&GT)”   无法从使用中推断出来。尝试指定类型参数   明确。 xxx \ Module2 \ Views \ Shared \ TestModelTable.cshtml 26 14 Module2

此外,如果我向视图添加ViewBag.Title,我会收到此错误:

  

找不到编译动态表达式所需的一种或多种类型。你错过了吗?   参考? XXX \单词数\视图\共享\ TestModelTable.cshtml

我认为网络配置存在问题,但它们是m​​vc区域中的标准网络配置(我删除了自定义WebPageView

我尝试在每个模块中创建的每个视图都会发生这种情况,但主应用程序运行正常。结果我试图将webconfig从主应用程序复制到模块,但我仍然有很多错误。


更新 6/12/12

在修复RazorBuildProvider的实现以处理模块后,应用程序现在可以成功呈现强类型视图。然而,intellisense仍然会产生这些错误。我怀疑@module...行上的第一个错误是罪魁祸首,并阻止编辑器加载强类型模型所需的信息。


更新 6/12/12

通过消除过程,我发现ninject的PreApplicationStartMethod是罪魁祸首。当方法调用RegisterServices时,我的模块加载器被调用,并在那里的某处抛出错误。 [assembly: WebActivator.PreApplicationStartMethod(typeof(Frontline.App_Start.NinjectWebCommon), "Start")]

为了获得更好的解决方案,我需要弄清楚如何正确调试此错误,我找不到任何内容,所以我在SO Debugging Visual Studio editor exceptions上发布了另一个(更通用的)问题

我还会发布我的hacky修复作为答案

1 个答案:

答案 0 :(得分:0)

所以我无法解决问题的根源,但我有一个快速修复。

如果名称中包含visual studio,我会在模块加载方法中终止该过程:

if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.Contains("VisualStudio"))
   return;