2015-03-29 6 views
0

Я загружаю типы из файлов, найденных в двух каталогах, и создаю экземпляр каждого типа, используя System.Activator. Я делал это несколько раз без каких-либо проблем, что заставляет меня думать, что я собираюсь что-то узнать.«Внутренняя ошибка произошла при оценке метода Activator.CreateInstance()»

Файлы в первом каталоге загружаются без проблем. В первом файле в следующем каталоге он переходит к точке вызова Activator.CreateInstance(type) и продолжается без исключения, но возвращенный экземпляр не может быть оценен («Не удалось оценить выражение»). Попытка выполнить тот же оператор в окне QuickWatch выдает указанную выше ошибку как значение с типом «объект», а не исключение.

Что я пробовал:

  • Ссылка узел, который содержит тип в вопросе и, в частности создать экземпляр с помощью new и пустой конструктор, даже с той же точки, что эта ошибка может произойти. (успех)
  • Использование Activator на этом типе в других местах в стеке вызовов. (отказ)
  • Тип в вопросе реализует интерфейс, но не подклассифицирует другие классы.
  • Сборка находится в AppDomain (очевидно, после ссылки на нее конкретно).
  • Перемещение внедряющей сборки в другое место. (неудача)

Я в такой степени, что я даже не знаю, что проверить, я никогда не видел этого раньше.

Это Visual Studio 2013, .NET 4.5. Я не могу найти ссылки на эту ошибку в контексте Activator.CreateInstance. Единственный экземпляр, который я могу найти в этой ошибке, не имеет разрешения. Я не ожидаю, что информация, которую я предоставил, приведет к разрешению, но если я смогу, по крайней мере, выяснить возможные причины, я могу исследовать свои собственные решения.

+0

Это сам отладчик, а не ваш код. Господь знает, как вы это сделали, в вашем вопросе нет никаких подсказок. Вам нужно пахать вперед, такой провал, как правило, исправляет себя. –

+0

@ HansPassant, пожалуйста, опубликуйте это как ответ, чтобы я мог его принять. Относительно того, что связано с созданным экземпляром, не может быть оценено отладчиком до тех пор, пока значение не будет выведено из свойства.Но это вообще не мешало казни, так что вы, кажется, правы. – redman

ответ

0

Попробуйте включить Fusion Logging и проверьте, что делает фьюжн, и убедитесь, что он может найти + загрузить сборку.

Scott Hanselman - Back to Basics: Using Fusion Log Viewer to Debug Obscure Loader Errors

В то время вы загружаете его там может быть множество вопросов.

Некоторые я встречал:

  • Другой вариант (возможно, предыдущий) данной сборки были загружены с этого типа недостающего.
  • Эта сборка не загружается из-за загрузки другой несовместимой версии загружаемых зависимостей.
Смежные вопросы