ASP.NET «Требуется ссылка на сборку» - PullRequest
0 голосов
/ 04 февраля 2009

У меня есть страница ASP.NET A , которая использует сборку слоя данных DAL . Я ссылаюсь на DAL сборку с
<%@ Assembly Name="NGC.DAL" %>, поскольку нет проекта для добавления ссылки. Саму сборку я скопировал в папку bin страниц.

Сборка DAL - это проект, который ссылается на System и System.Data.

Теперь, когда A вызывает метод в DAL, компилятор выдает ошибку

BC30652: требуется ссылка на сборку 'System.Data, версия = 2.0.0.0, Culture = нейтральный, PublicKeyToken = 969db8053d3322ac, Retargetable = Yes', содержащий тип 'System.Data.IDbConnection'. Добавьте его в свой проект.

Я попытался сослаться на сборку System.Data с тегом <%@Import Namespace="System.Data" %> и попытался скопировать ее в папку bin и сослаться на
<%@ Assembly Name="System.Data" %> тег, оба в A напрямую. Ничего не сработало.

Почему для проекта A, в котором используется проект B, в котором используется проект C, требуется ссылка на B и C, а не просто B, и почему вышеуказанный способ не работает?

Этот поток MSDN покрывает проблему, но не показывает решение, которое работает.

РЕДАКТИРОВАТЬ: Как предложил Роберт Вагнер, я добавил ссылку на web.config. Теперь я получаю еще одно сообщение об ошибке. BC30560: «CommandBehavior» является неоднозначным в пространстве имен «System.Data». , что странно, потому что тот, что в web.config - единственный, на который я ссылаюсь на странице.

Может быть, стоит упомянуть, что System.Data, на который ссылаются и используют в сборке DAL, взяты из компактной платформы. Но так как это единственный, который я использую, откуда возникает двусмысленность?

1 Ответ

2 голосов
/ 04 февраля 2009

Скорее всего, вы унаследовали от класса System.Data в вашей DAL DLL и используете этот класс на своем веб-сайте. Требуется ссылка для разрешения ссылок на эти классы, иначе компилятор не будет знать, что такое классовый контракт.

Вам не нужно копировать в System.Data, как в GAC.

Лучше было бы добавить ссылку в ваш файл 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? Если да, то почему бы не использовать проекты веб-приложений или веб-сайтов?

...