using namespace outside namespace被识别为不同的名称空间

时间:2015-12-29 16:09:59

标签: c# namespaces using

我班上有一些使用语句。 ReSharper说我需要添加另一个名称空间,所以我让它添加它。它将它添加到顶部,在命名空间声明之外,我们都很好。

但是StyleCop说使用需要在命名空间声明中。所以我在里面移动了using语句,但是当我将鼠标悬停在using语句上时,它说它是一个不同的命名空间。示例如下:

using Owin; // when I hover, it shows up as "Owin", which is correct

namespace MyCompany.Sales.Web
{
    using System.Configuration;
    using System.Web.Http;

将其向下移动后,它看起来像这样:

namespace MyCompany.Sales.Web
{
    using System.Configuration;
    using System.Web.Http;
    using Owin; // but when I hover, it shows up as "MyCompany.Owin"

如何阻止视觉工作室认为它需要" MyCompany"命名空间的一部分。请记住,有一个名为" MyCompany.Owin"的命名空间,但我在项目中没有对它的引用。

1 个答案:

答案 0 :(得分:1)

我不知道为什么会发生这种情况或者如何避免它,但一种方法是在尝试解析名称之前指示C#编译器从全局命名空间开始。

您只需在命名空间前加上global::修饰符(是的,那里有两个冒号),如下所示:

using global::Owin;

你也可以在类型上使用这个“技巧”,假设你有一个具有与其他东西匹配的名称的近似类型,无论命名空间的哪种组合以及编译器仍然认为它应该使用你的更接近的类型(通常这表明你的名字不好,但这是一个不同的问题):

using (var stream = new global::System.IO.FileStream(...))