Сборка.Исключение GetManifestResourceNames() из-за динамической сборки

#.net #unit-testing #exception-handling #dynamic-assemblies

#.net #модульное тестирование #исключение #dynamic-assemblies

Вопрос:

Если я запускаю модульный тест (mstest) Я получаю исключение, если вызываю assembly.GetManifestResourceNames() :

Вызываемый элемент не поддерживается в динамической сборке.

Это проблемный код:

 Dim assembly As Assembly = Assembly.GetAssembly(Me.GetType())
Dim names = assembly.GetManifestResourceNames()
  

Но если я правильно понимаю документацию, это должно сработать, и только при использовании AssemblyBuilder.GetManifestResourceNames() я должен получить это исключение.

Если я попытаюсь пройти через .СЕТЕВЫЕ источники Я получаю сообщение:

Для mscorlib.dll !Система.Отражение.Излучение.InternalAssemblyBuilder.GetManifestResourceNames()

Почему оно выдает это исключение? Я что-нибудь пропустил?

Я забыл упомянуть, что я использую Moq (с опцией mock.CallBase = True ) в тесте.

Комментарии:

1. Я нашел обходной путь: если я сделаю процедуру общей (статической в c #), где ‘assembly. Вызывается GetManifestResourceNames()’, оно работает.

2. Вы должны опубликовать это как ответ на вопрос, а затем принять его! 🙂

Ответ №1:

Я нашел обходной путь: если я сделаю процедуру общей (статической в c #), где ‘assembly.Вызывается GetManifestResourceNames()’, оно работает.

Комментарии:

1. Мне это тоже помогло, но было бы неплохо, если бы кто-нибудь мог объяснить, почему метод должен быть статичным.

Ответ №2:

Я не смог заставить это работать, просто используя static, но я нашел другое решение.

Моя настройка:

  1. Проект MVC (веб-сайт) (Ссылки 2)
  2. Логический проект (Ссылки 3)
  3. Библиотека содержимого (только файлы)

Мой веб-сайт вызвал метод в проекте logic, который пытался получить доступ к GetManifestResourceNames() из библиотеки содержимого. Это привело к ошибке.

Затем я удалил ссылку на содержимое из проекта logic и добавил ее непосредственно на свой веб-сайт. Никаких других изменений, и теперь это сработало.