2009-09-30 133 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元素(默認的元素不),這顯然不是問題。