2013-07-22 3 views
0

Я новичок в программировании на C#. Я пытаюсь компиляции # программа C, которая требует моно СесилТип или имя пространства имен 'Cecil' не существует в пространстве имен 'Mono'

Это код я пытаюсь скомпилировать Я Доно, как добавить ссылку ... может кто-то помочь мне в этом?

using System; 
using Mono.Cecil; 
using Mono; 

public class Program { 
    public static void Main() { 
    string infile = "in.exe"; 
    string outfile = "out.exe"; 
    Guid guid = Guid.Parse("12345678-1234-1234-1234-1234567890ab"); 
    AssemblyDefinition asm = AssemblyDefinition.ReadAssembly(infile); 
    ModuleDefinition mod = asm.MainModule; 
    mod.Mvid = guid; 
    asm.Write(outfile); 
    } 
} 

Я получаю следующее сообщение об ошибке, когда я скомпилировать программу с помощью MCS

error CS0234: The type or namespace name 'Cecil' does not exist in the namespace 'Mono'.Are you missing an assembly reference? 

Я не смог найти Mono.Cecil.dll в /usr/lib/mono/4.0 &/USR/Lib/моно /2.0. Mono.Cecil.dll присутствует только в/usr/lib/monodevelop/bin/

Пожалуйста, дайте мне знать, если я что-то упустил? и как я могу избавиться от этой ошибки ???

С уважением

Puliyan

+0

Независимо от его местоположения, вы должны добавить ссылку на эту DLL в свой проект. Вы сделали это? Недостаточно «использования». – DonBoitnott

+0

Hey Don, Я сейчас понял свой вопрос, извините за неудобство :) – user2563994

ответ

3

Вы должны сказать компилятор с -r, -pkg или -lib вариантами, где можно найти Mono.Cecil.dll.

Решение, которое работает всегда строит .dll из источника:

git clone https://github.com/mono/cecil.git 
cd cecil 
xbuild /property:Configuration=net_4_0_Release 

Вы также можете использовать другие конфигурации (например, net_4_0_Debug). Проверьте значения .sln или .csproj. Вы найдете Mono.Cecil.dll в подкаталоге obj. Затем вы можете скопировать эту библиотеку в любое место, которое хотите, и скомпилировать с помощью -r:/path/to/Mono.Cecil.dll, -lib:/path/to/libdirectory -r:Mono.Cecil.dll, или если вы используете MonoDevelop, добавьте ссылку на библиотеку (в MonoDevelop вы также сможете напрямую ссылаться на проект).

Cecil обычно должен быть доступен через механизм pkg-config; однако файл cecil.pc представляется неверно настроенным. Как правило, только с помощью -pkg:cecil должно быть достаточно, но, как представляется, быть разорван, и вместо этого вы должны использовать что-то вроде:

dmcs -r:`pkg-config --variable=Libraries` 

для того, чтобы получить полный путь к Mono.Cecil.dll в GAC.

Кроме того, поскольку моно делится на несколько пакетов под Debian, возможно, вам придется установить дополнительные библиотеки, если выше не работает (я не знаю, в настоящий момент, является ли Cecil частью основного пакета или нет).

Смежные вопросы

 Смежные вопросы