VB.NET: неоднозначная ошибка имени класса, когда не существует двусмысленности - PullRequest
4 голосов
/ 16 августа 2010

Наш клиент сообщил, что при попытке использовать наш .NET .DLL в VB.NET они получают сообщение об ошибке:

ошибка BC31429: «Наш класс» неоднозначен, поскольку несколько типовэто имя существует в пространстве имен «our.company.nspace»

Мне также удалось воспроизвести ошибку с фиктивным проектом, содержащим одну строку

Dim x as our.company.nspace.OurClass

Обычноэто потому, что есть несколько типов, имена которых отличаются только регистром.Но в этом случае нет такой двусмысленности.OurClass - это уникальное имя не только в определенном пространстве имен, но и во всей сборке и любых других сборках, на которые ссылается проект.Отражатель также показывает это.Также нет учеников с таким же именем, что также проверено Reflector.

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

Итак ... что дает?

(Примечание:.DLL использует и ссылается на vjslib (J #), если это имеет какое-либо отношение)

Ответы [ 3 ]

0 голосов
/ 04 ноября 2010

У меня была эта проблема при развертывании веб-приложения раньше.Я не получил ошибку в своей среде разработки, но когда я попытался развернуть ее на тестовом сервере, я получил неоднозначную ошибку пространства имен.Мне пришлось удалить все библиотеки DLL из папки bin, а затем повторно развернуть приложение.

Звучит так, как будто это может быть ссылка.Возможно, клиенту просто нужно удалить и повторно добавить ссылку на вашу DLL, а затем выполнить перестройку своего решения?

0 голосов
/ 09 ноября 2017

Нашел проблему.Существует два класса с повторяющимися именами: один строчный (помечен как «устаревший») и один верхний, но оба оставлены в коде.Очевидно, что он не соответствует CLS и взрывает VB.Net, который не учитывает регистр.

генерировать и генерировать

generateAsync и GenerateAsync

Сегодняшнее решение - это загрузить с GitHub, удалить нарушителей в нижнем регистре, перекомпилировать и вручную добавить в проект, по крайней мере, до обновленияразмещен на их конце.

0 голосов
/ 07 сентября 2010

Вы пробовали использовать Глобал. префикс? например

Dim x as Global.our.company.nspace.OurClass

См. http://msdn.microsoft.com/en-us/library/k701czy1(VS.90).aspx

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