2011-02-22 58 views
5

我在解決方案中有2個項目,1個DLL,另一個exe。然而使用無4.0特定庫中使用,所以應該可以讓我安全地將其更改爲3.5將目標框架從v4.0更改爲v3.5後無法找到名稱空間

我這樣做,同時根據項目屬性.NET 4.0版兩者都是,我建的DLL罰款。現在,當我嘗試構建exe文件時,找不到dll的命名空間。我已閱讀參考文獻,但仍無法看到它。當我恢復.net版本時,它確實表示我可能必須在構建之前修改項目文件。我試圖通過谷歌搜索解決方案,但我使用的關鍵詞太常用。任何人都可以建議嗎?

非常感謝,克里斯

編輯: 已經嘗試以下..

  • 參考DLL明確,同時確保沒有4.0副本
  • 刪除bin和OBJ文件夾
  • 重啓VS
+2

你得到了什麼確切的錯誤信息? – Justin 2011-02-22 19:10:12

+0

無法找到類型或命名空間名稱'引擎'(您是否缺少using指令或程序集引用?) – Chris 2011-02-22 19:15:58

+0

我刪除了exe項目中對「Engine」dll項目的引用,然後我重新讀取它並仍然保留無法再看到命名空間。我已經重新啓動了視覺工作室。我也嘗試過手動引用dll,最初我意外地選擇了使用4.0的舊副本,並告訴我我無法將3.5庫添加到3.5解決方案,所以我找到了正確的文件並且引用看起來很好,但是當我構建它時仍然看不到名稱空間(代碼沒有更改)。因此,我只是將它重新鏈接到相同解決方案中的項目。它仍然沒有看到名稱空間。 – Chris 2011-02-22 19:18:59

回答

2

而不是引用輸出DLL,您是否嘗試將其設置爲項目引用。

另外,你有沒有做過一個乾淨的解決方案構建任何.Net 4.0文件揮之不去?您可以通過刪除bin和obj文件夾來手動清理項目。

您是否嘗試從解決方案中刪除項目,創建一個新的.net 3.5項目並編譯該項目。然後添加ddl項目(Add - > existing project)並編譯,然後在不帶引用的情況下添加exe項目,編譯然後添加到引用中。

奇怪的問題,但你有沒有檢查名稱空間。你能否在你的項目中調用namesapce,即using mydllproject.model.myengine

0

- 將dll和exe放入3.5中
-compile的dll只有
-Delete的參考DLL並重新進行添加它
-rebuild解決

0

檢查所引用什麼樣的他們需要的目標運行時的DLL文件,特別是「Engine.dll」 。例如,您可以使用.NET Refractor完成此操作。如果它們是針對v4.0編譯的,那麼您需要獲取早期版本的.NET運行時的版本。

1

我會以XML格式打開你的項目文件。爲此,請關閉soltion並重新打開項目,方法是單擊File/Open按鈕上的向下箭頭並選擇Open With ... XML(Text)Editor。檢查以確保每個項目的標題中都有一個ToolsVersion =「4.0」。檢查RootNamespace和TargetFrameworksVersion元素以查看它們是否具有您所期望的值。在該文件的底部,檢查ItemGroup中的ProjectReference元素。確保項目引用中的GUID與解決方案文件中定義的GUID相匹配。

最後,確保在重建之前清理項目。如果您使用的是源代碼管理,請將該項目簽出到新的空沙箱中。

祝你好運!

0

我有一個非常類似的問題。在我的情況下,我有兩個項目,一個「類庫」和一個Windows窗體應用程序在同一個解決方案。

在將兩個項目的目標框架更改爲.NET4.0框架並在Windows窗體應用程序中添加對類庫的引用後,它將不會檢測到我的類庫的名稱空間。

這裏是我這樣做,終於解決了這個問題:

  1. 創建一個新的項目,.NET 4.0框架爲目標框架。我從原始解決方案中將所有表單和類導入到此項目中。

  2. 將現有類庫添加爲新項目。

  3. 增加從我的窗戶類庫項目的引用的形式投射

  4. 對於每一個類庫項目下的類文件,我的「生成操作」設置爲「編譯」

  5. 右鍵單擊類庫項目並選擇「重建」。

  6. 後來,當我進入我的Windows窗體項目,我可以看到的命名空間,當我「使用namespace_name」語句中使用 。

注意:也許你不需要像我在前幾個步驟中那樣創建一個新項目。但是改變Build Action肯定有訣竅。

希望它有幫助。

相關問題