Неоднозначная ошибка парсера dll при попытке отладки проекта - PullRequest
1 голос
/ 05 апреля 2011

При попытке отладки решения MVC появляется следующая ошибка:


Ошибка парсера Описание: во время анализа ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующую конкретную информацию об ошибке разбора и измените исходный файл соответствующим образом.

Сообщение об ошибке синтаксического анализатора: тип 'HandiGamer.MvcApplication' является неоднозначным: он может быть получен из сборки 'C: \ Users \ Kevin \ Documents \ visual studio 2010 \ Projects \ HandiGamer \ HandiGamer \ bin \ HandiGamer.DLL' или из сборка 'C: \ Users \ Kevin \ Documents \ visual studio 2010 \ Projects \ HandiGamer \ HandiGamer \ bin \ HandiGamer.WebUI.DLL'. Пожалуйста, укажите сборку явно в имени типа.

Ошибка источника:

Строка 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = "HandiGamer.MvcApplication" Language = "C #"%>

Исходный файл: /global.asax Строка: 1


Впервые я столкнулся с этой ошибкой в ​​своем проекте. Все, что я изменил с момента последней отладки, это страница .master, представление, и я добавил пару классов ViewModel. Мое решение имеет два проекта - HandiGamer.WebUI и HandiGamer.Domain - но я никогда не сталкивался с проблемой неоднозначности с ними раньше. Восстановление моего решения ничего не сделало. Я не уверен, что еще делать.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2016

Вы недавно переименовали сборку? В этом случае может быть так, что старая DLL все еще находится в папке bin ...\Projects\HandiGamer\HandiGamer\bin и загружается во время выполнения. Как говорится в сообщении об ошибке, библиотеки DLL

HandiGamer.DLL
HandiGamer.WebUI.DLL

оба содержат HandiGamer.MvcApplication, поэтому синтаксический анализатор не может решить, какой из них использовать, и при попытке его запуска возникает конфликт (компиляция обычно работает без ошибок, проблема обычно возникает во время выполнения).

Чтобы решить эту проблему, удалите их из папки bin выше, а затем перестройте все решение. К сожалению, «Чистое решение» не всегда очищает все правильно, поэтому иногда приходится делать это вручную.


Подсказка: Если вы выгружаете проект, вы можете редактировать файл проекта и искать там сборки. Он содержит все ссылки, которые вы указали, но будьте осторожны, чтобы не испортить его. После того, как вы выполнили поиск и нашли нужную информацию, закройте ее и перезагрузите проект. Обычно это происходит намного быстрее, чем все записи в разделе «Ссылки» вашего проекта.

2 голосов
/ 05 апреля 2011

Похоже, класс MvcApplication определен в обеих сборках в пространстве имен HandiGamer. Попробуйте открыть их с помощью Reflector, чтобы подтвердить это, выполнив поиск по этому имени класса. Затем удалите дублирующий класс, оставив его только в сборке приложения ASP.NET MVC. Другой проект должен быть библиотекой классов, а не веб-приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...