ASP.NET“程序集需要参考”错误

时间:2009-02-03 23:39:59

标签: asp.net assemblies asp.net-2.0 reference

我有一个使用数据层程序集 DAL 的ASP.NET页面 A 。我引用了 DAL 程序集 <%@ Assembly Name="NGC.DAL" %>标记,因为没有要添加引用的项目。组件本身我复制到页面的bin文件夹。

程序集DAL是一个引用SystemSystem.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来自紧凑框架。但由于它是我使用的唯一一个,模糊性来自哪里?

1 个答案:

答案 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应用程序或网站项目?