2009-02-03 64 views
0

我有一個ASP.NET頁面A,它使用數據層彙編DAL。我參考DAL程序集與
<%@ Assembly Name="NGC.DAL" %>標記,因爲沒有項目添加引用。程序集本身被複制到頁面的bin文件夾中。ASP.NET「需要彙編的參考」錯誤

裝配DAL是一個參考SystemSystem.Data的項目。

現在,當A呼叫在DAL的方法,編譯器提供錯誤

BC30652:需要裝配參考「System.Data,版本= 2.0.0.0,文化=中性公鑰= 969db8053d3322ac,可重定目標=是'包含類型'System.Data.IDbConnection'。添加一個到你的項目。

我想引用大會System.Data<%@Import Namespace="System.Data" %>標籤,我試圖將它複製到bin文件夾,並用
<%@ Assembly Name="System.Data" %>標籤引用它,無論是在一個直接。沒有工作。

爲什麼使用項目B使用項目C的項目A需要引用B C而不僅僅是B,爲什麼上面的方法不起作用?

This MSDN線程涵蓋了這個問題,但沒有顯示任何可行的解決方案。

編輯:正如羅伯特瓦格納建議我添加引用到web.config。 現在我收到另一個錯誤消息。 BC30560:'CommandBehavior'在命名空間'System.Data'中不明確。這是奇怪的,因爲web.config中的一個是我在頁面內引用的唯一一個。

也許值得一提的是,DAL程序集中引用和使用的System.Data來自緊湊框架。但是,由於這是我使用的唯一一個,模糊來自哪裏呢?

回答

2

最有可能你從你的DAL DLL中的System.Data類繼承,並在你的網站中使用該類。它要求引用能夠解析引用那些類,否則編譯器不知道類合同是什麼。

您不應該像在GAC中那樣需要在System.Data中進行復制。

一個更好的辦法是在你的web.config文件中添加引用:

<system.web> 
    <compilation debug="true"> 
     <assemblies> 
     <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, 
       PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 

當你說「沒有項目添加引用」你使用Visual Studio?如果是這樣,爲什麼不使用Web應用程序或網站項目?