Вопрос

У меня есть какой-то код для загрузки файла EXE и показывает свой код CIL для пользователя.Для этого я использую mono.cecil и mono.cecil.cil.

Теперь я хочу сделать что-то другое: я хочу знать, есть ли пользователь MONO.CECIL и MONO.CECIL.CIL в своей системе.Сделать это, я подумал использовать отражение .assembly.load с mono.cecil и mono.cecil.cil.Что-то вроде:

public void PrintInstr( ) {
    try
    {
        Reflect.Assembly mc = Reflect.Assembly.Load( "Mono.Cecil" );
        Reflect.Assembly mcc = Reflect.Assembly.Load( "Mono.Cecil.Cil" );
    }
    catch( Exception )
    {
        System.Console.WriteLine( "\"Mono.Cecil\" or \"Mono.Cecil.Cil\" not found " );
        return;
    }
    //[...]
}
.

Но я получаю только следующую ошибку:

Could not load file or assembly 'Mono.Cecil' or one of its dependencies.
The system cannot find the file specified.
.

И, конечно, у меня mono.cecil и mono.cecil.cil.Я не использую правильно сборка.Если это так, может ли кто-нибудь сказать мне, как использовать сборку. Нажмите, чтобы иметь возможность загрузить Mono.CECIL и MONO.CECIL.CIL, не ищешь путь (чтобы сделать только файл EXE, который будет использоваться под Windows или GNU / Linuxс моно)?

ПРИМЕЧАНИЕ : Я работаю под Mint Linux с монодевтомой 2,6 или под Windows 7 с монодевтомой 2.8.

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

Решение

Вы, кажется, не понимаете, что assusion.load < / a> делает для загрузки сборки. Я думаю, что вы пытаетесь искать, есть ли у пользователя MONO.CECIL в GAC. Проблема в том, что это только пути поиска текущего AppDomain ищеты при поставках частичного имени, GAC используется только при поставке полного имени. Это документировано Здесь :

Поставка частичного имени сборки для AssoolRef не рекомендуется. (Частичное имя опускает одну или несколько культурных, версий или открытого ключа токен. Для перегрузки, которые принимают строку вместо сборки Объект, «Myassembly, Version= 1.0.0.0» является примером частичного имени и "myassembly, version= 1.0.0.0, культура= нейтральная, Publicketeken= 18ab3442da84b47 "является примером полного имени.) Использование Частичные имена оказывают негативное влияние на производительность. Кроме того, Частичное имя сборки может загрузить сборку из глобальной сборки кэш, только если есть точная копия сборки в Базовый каталог приложений (BUSISECTORY или Appdomainsetup.ApplicationBase).

Дополнительная информация о том, как зонды CLR для сборок можно найти здесь: http://msdn.microsoft.com/en-us/library/aaa720133.aspx

Это именно поэтому assuse.loadwithPartialname () существует, но Это было обесначено.

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