2011-12-07 49 views
1

我在項目A中的名稱空間ProjectA.Model.MyEntities中有我的數據模型。在項目B(一個MVC2項目)中,我引用了項目A.但是當我的頁面被請求時,他們窒息地說'類型或名稱空間ProjectA未知。正在編譯aspx頁面時缺少名稱空間。 MVC2,.Net4

當我編譯我的項目,我沒有得到任何錯誤。在我的控制器中,數據庫上下文似乎工作正常,因爲MyEntities的引用編譯正常。在MyEntities上的定義將我導航到項目A中的Model.Designer.cs文件。

這就像項目A是靜態編譯期間的引用,但不是在運行時。

這是一個使用ASPX引擎在Visual Studio 2010上運行於.Net4的MVC2項目。這是一個遺留項目,這就是爲什麼它是MVC2,但它已升級到.Net4。

我必須做些什麼來擺脫這個錯誤。整個早晨,我的頭一直在牆上毆打。

回答

2

您可以嘗試將ProjectA.Model.MyEntities的名稱空間添加到web.config,這將通知應用程序名稱空間對所有視圖都是必需的。

<%@ Import Namespace="ProjectA.Model.MyEntities"%> 

:如果你只使用有限的若干意見中項目A的實體,這將是更合適 -

<system.web> 
    <pages> 
     <namespaces> 
      <!-- defaults omitted for clarity--> 
      <add namespace="ProjectA.Model.MyEntities" /> 
     </namespaces> 
    </pages> 
</system.web> 

或者,您可以在各個視圖頂部使用的進口指令應包含在@Page或@Control指令之後。

+0

我得到相同的錯誤,如果我這樣做,唯一的區別是,錯誤表明命名空間現在在Web.config中。這就像它沒有加載其中包含數據模型的程序集。 – sheamus

+0

您是否確定ProjectA的引用將CopyLocal設置爲true? (選中此項,右鍵點擊ProjectB上的參考,屬性,複製本地)。如果這不是True,那麼ProjectA中編譯後的dll不會被複制到輸出目錄,所以應用程序將無法在運行時使用它。 –

+0

是的,我有複製本地設置爲true。嘗試過兩種方法。 – sheamus

相關問題