2008-11-12 6 views
28

Тип «x» определен в сборке, на которую не указаны ссылки. Вы должны добавить ссылку на сборку 'abc123'.Странная ошибка - CS0012: Тип x определен в сборке, на которую не ссылаются

У меня есть веб-приложение .NET 2.0, которое ссылается на мою сборку «abc123». Сборка существует в GAC, и я проверил, что она является правильной (той же) версией. В остальной части приложения нет проблем, кроме одной .aspx-страницы. На рассматриваемой странице есть ретранслятор, который отображает пользовательский элемент управления как одно из своих «полей». После связывания списка типа у ретранслятора я прохожу пользователь управление списком типа х (свойство у), как показано здесь:

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/> 

В наборе свойств пользовательского элемента управления, я связываю список типов x в gridview в пользовательском элементе управления.

Странно отметить, что этот отчет отлично работает на моем компьютере разработки, но не на каких-либо серверах после развертывания. Мой компьютер - Windows XP, IIS6, VS2005. Серверы - это Windows Server 2003, IIS6.

Надеюсь, я объяснил это достаточно хорошо. Заранее благодарим за любую информацию, которую вы можете предоставить.

ответ

27

Я сотрудник колледжа Майка, и мы разработали решение.

Тип X определен в его сборке, то есть только в GAC. Несмотря на то, что в его веб-приложении ASP.NET была ссылка, она не загружалась из GAC только для этого UserControl. Остальная часть приложения работала должным образом. Мы подтвердили неудачную загрузку, разместив копию сборки в каталоге bin, и все сработало. Мы удалили сборку, и проблема вернулась.

Наше решение состояло в том, чтобы вручную добавить запись в web.config в секцию сборки, чтобы указать ASP.NET на GAC.

Похоже, что в любое время, когда вы ссылаетесь на тип страницы (а не на код), вам нужна информация о сборке, определенная в файле web.config или в директиве на странице.

<assemblies> 
     <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/> 
</assemblies> 
3

Там же ошибка, которая может проявляться с подобными симптомами, описанной here.

Обходным путем является удаление всего в каталоге C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \, и оно, похоже, проявляется в режиме отладки.

+1

Ссылка не работает. – 2011-03-10 13:55:52

0

У меня была такая же ошибка, но у меня был public конструктор в моем классе, который использовался как параметр, объект из другого проекта.

Я решил проблему, сделав этот конструктор внутренним.

0

Чаще всего это происходит из-за сборных сборок. Один из способов решить эту проблему - сделать «сильную ссылку» в файле proj или config. Смотрите этот блог post

1

я обнаружил, что если type x на самом деле класс в вашем App_Code, пачкая его и часто повторно экономии заставляет веб-приложение, чтобы перекомпилировать и решает эту проблему.

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

  • Нет связанных вопросов^_^