2009-09-30 109 views
1

我知道我在这里忽略了一些非常简单的东西。命名空间被自动导入

我正在使用Visual Studio 2008并创建了一个ASP.NET 3.5项目和解决方案。我在我的解决方案中添加了另一个项目,一个类库。我添加了一个对我的类库的引用。现在,当我点击我的类库的属性时,Default Namespace被设置为“HRCommon”,这是正确的。

现在由于某种原因,从我的ASP.NET应用程序中,它会自动导入HRCommon命名空间。所以当我想从我的类库中引用一个类时,我只需要键入类名。我想要指定整个名称,如HRCommon.<ClassName>而不仅仅是<ClassName>

有人告诉我我在这里忽略了什么?该语言是C#,顺便说一句。

+0

为什么添加一个VB.Net标记? – SLaks 2009-09-30 00:24:18

回答

2

什么命名空间是你的ASP .Net代码?

它可能在HRCommon内部。

如果你在一个嵌套命名空间编写代码,它会自动导入所有父命名空间(例如,在System.Windows.Forms代码并不需要进口System.WindowsSystem

为了防止这一点,无论是移动图书馆或ASP .Net项目到不同的命名空间。


或者,库中可能没有namespace语句。

VS中的Default Namespace选项仅用于在新的C#源代码中生成namespace块。 编辑:为了澄清,编译器根本不使用默认命名空间设置。它仅被Visual Studio用于在新的源文件中自动插入namespace块。

检查库中的源文件,并确保所有类都在名称空间HRCommon内部定义。

例如:

namespace HRCommon { 
    public class MyClass { 
     //... 
    } 
} 
+0

我的ASP.NET代码不在名称空间中,但它在一个完全不同的项目中。我看不出它是如何在HRCommon名称空间中。 – Icemanind 2009-09-30 00:31:13

+0

确保类在名称空间中定义。 – SLaks 2009-09-30 00:32:38

+0

如果它是一个asp.net web应用程序(而不是网站),那么它肯定是在一个名称空间。您可以在Web项目上右键单击 - >属性以查看。 – Craig 2009-09-30 00:33:33

0

编辑:问题是你没有把库中的代码放在一个命名空间(如我的第一个答案的下半部描述);我将此留作参考。

检查HRCommon是否不在Web.config中的默认名称空间列表中。 (这可能不是,但不妨碍检查)。

具体而言,请看system.web/pages/namespaces。如果你的Web.config没有namespaces元素(默认的元素不),这显然不是问题。