2011-07-16 39 views
6

我在項目中添加了一個DLL。該DLL包含命名空間test.security。現在,test.security無法識別。爲什麼是這樣?已添加引用但名稱空間不被識別

我在其他項目中使用此DLL,我沒有其他問題。

+2

您是否添加了對DLL的引用? – Zachary

回答

10

它通常取決於什麼是該命名空間;例如,如果裏面什麼都沒有,那麼命名空間並不存在

您還可能缺少一些其他依賴項,這意味着編譯器無法使用(直到添加了引用爲止)該名稱空間中的任何類型(例如,如果該名稱空間中的類型都依賴於來自Another.dll的某些類型,並且您沒有引用Another.dll)。

您可能引用了dll的錯誤版本,並且您引用的版本沒有該命名空間。

有可能編譯器已經告訴你有關引用問題,這意味着它不能使用它 - 查看錯誤/警告列表。例如,它可能是一個物理上丟失的文件,或者一個.NET版本不匹配或強命名問題,這意味着它不能使用該引用。

3

1.去除的參考,然後重新添加 2.Close解決方案,並重新打開它 3.創建一個新的解決方案,並添加所有舊的在它

3

檢查您的DLL,S .NET版本和你的主機項目。 NET版本。最可能的是有不同的,不知何故它會在你的具體情況中產生問題。

問候。

15

您是否使用客戶資料作爲項目目標?考慮這種情況:

項目A - >項目面向.NET Framework 4.0中

項目B - >項目面向.NET Framework 4.0客戶端配置文件

項目A引用項目B。名稱空間項目A未在項目B中識別。

如果這種情況匹配,這是由於目標不匹配造成的。客戶端配置文件支持完整框架的BCL的一個子集。如果程序集依賴於使用完整框架(如要求類型爲System.Web等),那麼它僅適用於僅支持客戶端配置文件的可用程序。

簡單的解決方案,將項目B更改爲.NET Framework 4.0(非客戶端配置文件)。

+1

謝謝馬修,你救了我的一天。 (晚上?) – oldbrazil

+0

在這裏得到同樣的問題...默認項目是與.net 4客戶端配置文件的目標... – Guigui

+0

你也救了我的屁股 - 好趕上!謝謝! – Locke

3

對晚會的方式,但顯然這是在最近的搜索,所以這是爲了幫助新手誰登陸這裏。還有一件事要驗證。

由於從Dummy01的評論引述他的回答了這個問題:

Pack C# project to dll or another library

「DLL是在你的項目的bin或發佈文件夾,如果它看上去是空的,因爲你的類被定義爲私有或內部。你應該把你需要在你的dll外看到的名字改爲公開。「

2

我也遇到過這個問題。在我的情況下,我嘗試刪除引用,重建引用的項目,然後再次添加它,但問題仍然存在。

在我的情況下,問題是目標項目的名稱空間中的類不公開。這意味着該名稱空間中沒有任何可訪問的內容,因此它並不存在。

將它們設置爲公共訪問級別解決了該問題。希望它能幫助別人! :)

1

我有同樣的問題。我將控制檯應用程序更改爲項目屬性中的類庫。這解決了它。

相關問題