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

spi*_*nt0 2 c#

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

Error   1   The name 'FilterConfig' does not exist in the current context ...
Run Code Online (Sandbox Code Playgroud)

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

我在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,但我对一般解决方案(或多个解决方案)感兴趣,因为我也在使用控制台应用程序.

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

p.s*_*w.g 5

一般故障排除步骤

右键单击标识符.在上下文菜单中,您应该看到Resolve… ▹.在子菜单中,您应该看到两个列表,其中包含所有项目加载的引用中包含具有该名称的符号的所有名称空间.
在此输入图像描述

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

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

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

关于这个具体问题

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

这些通常会在您的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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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