Получение информации о DLL в .NET - PullRequest
4 голосов
/ 09 апреля 2011

Моя проблема:

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

Мой код:

Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")

otherDomain.DoCallBack(Sub()
                            Assembly.ReflectionOnlyLoadFrom("filePath")
                       End Sub)

Dim assemblies As New List(Of Assembly)(otherDomain.ReflectionOnlyGetAssemblies())

Последняя строка бросков:

Не удалось загрузить файл или сборку 'file', Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null 'или одну из ее зависимостей. Система не может найти указанный файл.

Если бы эта строка работала, я полагаю, я бы просто сказал:

assemblies(0).GetName.version.tostring
assemblies(0).GetReferencedAssemblies

и затем выгрузите домен приложения .

1 Ответ

1 голос
/ 09 апреля 2011

Проблема здесь может быть связана с SetupInformation для нового домена приложений.Когда вы создаете новый домен приложений, попробуйте создать его следующим образом, чтобы он наследовал ту же информацию о безопасности и настройке, что и существующий домен приложений:

AppDomain.CreateDomain("otherDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);

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

...