Метод VB.NET не найден при загрузке сборки - PullRequest
2 голосов
/ 03 августа 2009

Я получаю сообщение об ошибке «Метод не найден:« Boolean MyCompany.LibraryAssembly.SomeFunction (System.String) »» при запуске консольного приложения VB.NET

Метод является частью внешней сборки и определенно находится в сборке. Ошибка возникает только во время выполнения, когда я иду, чтобы войти в функцию, которая вызывает метод.
У меня есть сборка, на которую ссылается мой проект, и я не копирую ее локально. Intellisense не показывает ошибок, как и компилятор. Я загружаю сборку статически не динамически.

Я ссылаюсь на локальную папку (не GAC), хотя та же версия также доступна в GAC.

Какие-нибудь предложения относительно того, что я мог бы проверить?

Ответы [ 5 ]

2 голосов
/ 16 сентября 2009

Я обнаружил, что решение состоит в том, чтобы снова обновить GAC той же версией локальной сборки. Я сделал это, перетащив файл сборки в папку C: \ Windows \ Assembly. После этого и перестройки моего консольного приложения проблема исчезла. Странно, потому что сборка в GAC уже показывала тот же номер версии, что и локально.

1 голос
/ 03 августа 2009

Какая версия .NET это?

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

Модули компилируются в классы NotInheritable с помощью методов Shared. Попробуйте обратиться к методу, включая имя модуля / класса, и посмотрите, имеет ли это значение?

Если вы используете строгое имя сборки, загрузка из GAC имеет приоритет. Если возможно, удалите сборку из GAC на данный момент, просто чтобы убедиться, что вы не используете более старую версию.

0 голосов
/ 03 августа 2009

Я думаю, что bin вашего работающего приложения содержит старую сборку Скопируйте новую сборку в вашу корзину для приложений.

0 голосов
/ 03 августа 2009

Очистите и восстановите обычно, чтобы решить метод, не найденный для меня.

0 голосов
/ 03 августа 2009

Попробуйте удалить ссылку и добавить ее снова. При этом просто смотрите информацию о версии .NET объекта. Затем сравните его с версией вашего приложения.

(Я думаю, что GAC имеет преимущество перед локальной папкой. Не об этом. Пожалуйста, проверьте версию GAC Dl.)

Также проверьте, доступна ли функция (может быть защищенная или внутренняя функция)

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