Вопрос

У меня есть это в моем коде:

Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}

Когда я отлаживаю свою программу, все работает нормально. Когда я создаю EXE для своей программы, код приходит на Assembly.getTypes () и перестает выполнять. Что может привести к тому, что Assembly.getTypes () работал по -разному, когда я отладкую, когда я использую EXE?

Это было полезно?

Решение

Взгляните на эту ссылку:

http://social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/

Вы никогда не должны использовать Assembly.LoadFile (). Используйте LoadFrom () Если вы знаете, где находится сборка, используйте Load (), чтобы позволить .NET выяснить, где находится сборка. Использование load () должно быть вашим предпочтением, но может потребоваться файл .config, чтобы помочь .net найти сборку

кредит @Hanspassant

Другие советы

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

Вы можете подписаться на это событие и сделать просто Assembly.LoadFrom Из известного вам места или даже сделайте какую -то необычную загрузку своей собственной, основываясь на какой -то системе, которую вы инженер. Это также TypeResolve а также ResourceResolve События в AppDomain что позволяет вам справиться с этими аспектами разрешения различных зависимостей AppDomain. Анкет Для получения подробной информации см. Это Тема Microsoft Forum.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top