如何找出缺少标识符所属的命名空间?

时间:2014-01-26 01:19:01

标签: c#

当我在visual studio中编译我的c#项目时,我收到了错误...

Error   1   The name 'FilterConfig' does not exist in the current context ...

我想我需要添加'使用'语句或添加包或其他东西。一般来说,最好的方法是尝试找出丢失的东西可能属于哪些包/命名空间?例如,有没有办法搜索所有常见的包以找到一个成员?

我在msdn上搜索但似乎无法找到它.......

http://social.msdn.microsoft.com/Search/en-US?query=filterconfig&emptyWatermark=true&searchButtonTooltip=Search%20MSDN&ac=4#refinementChanges=33,26,59&pageNumber=1&showMore=false

更新:这个特定的例子适用于MVC4,但是我对一般解决方案(或多个解决方案)感兴趣,因为我也在使用控制台应用程序。

在使用我在网上找到的不完整的教程时,我经常会遇到这个问题。所以引用可能根本不存在。通常它们最终适用于Microsoft。

2 个答案:

答案 0 :(得分:5)

一般故障排除步骤

右键单击标识符。在上下文菜单中,您应该看到 Resolve ...▹。在子菜单中,您应该看到两个列表,其中包含所有项目加载的引用中的所有名称空间,其中包含具有该名称的符号。
enter image description here

从第一个列表中选择一个项目会在当前文件中添加using directive。从第二个列表中选择项目将修改对全局限定的标识符的使用。只需选择您要使用的选项即可。

如果在任何加载的引用中找不到标识符(要么缺少引用,要么是错误),那么您将看不到此列表。在这种情况下,您应该确保所有引用都正确加载(旁边通常会有一个感叹号无法加载)并检查标识符的拼写。

如果所有引用都已正确加载,并且您确定标识符拼写正确,则可能是该符号已重命名,或者已完全从项目中删除。使用重命名... 工具(通过右键单击标识符也可以找到)有助于将来避免这种情况。有问题的代码片段也可能是从定义了该符号的项目中取出的,并且您需要包含来自该项目的更多代码以使代码正常运行。最后,可能只是你错过了一个必要的参考。如果是这种情况,您应该调查此代码的来源以及它使用的库,通过询问原始开发人员,或者是否来自在线源,查看源代码以查看是否提供了更多详细信息。

关于此特定问题

这是关于一般故障排除的。但是,对于您的具体问题,这些步骤可能只会让您到目前为止,并且您需要了解更多关于此类确切类来自哪里才能解决它。 Microsoft的MVC4项目模板包含App_Start文件夹中的数字文件。您通常从这样的 开始(注意:并非每个MVC4项目模板都包含相同的文件)
MVC4 project template

这些通常会在Global.asax文件中引用,如下所示:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();
    }
}

如果这是您遇到问题的地方,那么项目可能会以某种方式被破坏。 FilterConfig类已完全重命名或删除(如上所述)。该项目也有可能作为MVC3模板(我认为不包括FilterConfig类)或MVC4的预发布版本开始,并且在迁移到完整的MVC4模板时,这是剩下的出。无论如何,我建议你创建一个全新的MVC4项目,看看你的项目和新项目有什么不同。

现在,如果由于任何原因新项目没有像它应该那样编译和运行,那么模板本身可能会以某种方式损坏。在这种情况下,我建议您卸载MVC4并从official source重新安装。

答案 1 :(得分:2)

除了 pswg 之外(你通常应该这样做):我猜你正在使用ASP.NET MVC或ASP.NET Web API,而且FilterConfig类位于* App_Start *文件夹。如果是这样,您应该从命名空间的末尾删除* App_Start *。完成后,您可以在 Global.asax 文件中无问题地调用它。

如上所述,通常您应该使用 p.s.w.g 提供的解决方案,但对于启动任务,这是Microsoft在其模板中执行此操作的方式。

相关问题