'YZ'类型中不存在类型'X'

jqn*_*qno 5 .net c# compiler-errors .net-4.0

我们的团队最近已从Visual Studio 2008/.NET3.5迁移到Visual Studio 2010/.NET4.0.现在,VS2010给了我一个奇怪的错误信息.它可以通过以下程序重现:

using System;

namespace Some.Main
{
}

namespace SomeLib
{
    interface Some
    {
    }
}

namespace ConsoleApplication1
{
    using Some.Main;
    using SomeLib;

    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Press enter to continue");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这在VS2008中运行得很好,但在VS2010中我收到以下错误消息:

"SomeLib.Some"类型中不存在类型名称"Main"

有趣的是,如果我点击"构建解决方案",该程序构建得很好,我甚至可以毫无问题地执行它.它只是Visual Studio,似乎有这个代码的问题.

不幸的是,我正在研究一个大型遗留应用程序,我不能(轻松地)更改这些名称空间的名称.

我想知道如何解决这个错误,我也很好奇是什么导致它.

Adr*_*tti 9

你只是让编辑器感到困惑.Some既是名称空间又是接口名称,显然它不会using按照它们声明的顺序检查/解析s.

如果你想明确指出你是指代名称空间而不是类型名称,只需添加global::using声明(从名称空间开始),如下所示:

using global::Some.Main;
Run Code Online (Sandbox Code Playgroud)

更新
非常好的帖子在这里由@alex链接在评论中:'使用'语句应该在命名空间内部还是外部?