2009-02-03 5 views
0

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

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

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

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

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

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

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

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

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

ответ

2

Скорее всего, вы унаследовали от класса System.Data в своей Dll 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? Если да, почему бы не использовать проекты веб-приложений или веб-сайтов?

Смежные вопросы