我有一个使用数据层程序集 DAL 的ASP.NET页面 A 。我引用了 DAL 程序集
<%@ Assembly Name="NGC.DAL" %>
标记,因为没有要添加引用的项目。组件本身我复制到页面的bin文件夹。
程序集DAL是一个引用System
和System.Data
。
现在当A在DAL中调用方法时,编译器会给出错误
BC30652:程序集'System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 969db8053d3322ac,Retargetable = Yes'所需的引用包含类型'System.Data.IDbConnection'。在项目中添加一个。
我尝试使用System.Data
标记引用程序集<%@Import Namespace="System.Data" %>
,然后尝试将其复制到bin文件夹并引用它
<%@ Assembly Name="System.Data" %>
标记,直接在A中。没有任何效果。
为什么使用项目B的项目A使用项目C需要引用B 和 C而不仅仅是B,为什么上面的方法不起作用?
This MSDN主题涵盖了该问题但未显示有效的解决方案。
编辑:正如Robert Wagner建议我添加了对web.config的引用。 现在我收到另一条错误消息。 BC30560:'CommandBehavior'在名称空间'System.Data'中是不明确的。这很奇怪,因为web.config中的那个是我在页面中引用的唯一一个。也许值得一提的是,DAL程序集中引用和使用的System.Data
来自紧凑框架。但由于它是我使用的唯一一个,模糊性来自哪里?
答案 0 :(得分: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应用程序或网站项目?