2013-07-22 3 views
0

C# 프로그래밍을 처음 사용합니다. 모노 세실 필요가있는 C# 프로그램을 컴파일하려고합니다.'Cecil'형식 또는 네임 스페이스 이름이 'Mono'네임 스페이스에 없습니다.

이것은 컴파일하려고하는 코드입니다. 참조를 추가하는 방법 ... 누군가가 나를 도와 줄 수 있습니까? 내가 /usr/lib/mono/4.0 &는/usr/lib 디렉토리/모노 내가 Mono.Cecil.dll을 찾을 수 couldnt는 MCS

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

를 사용하여 프로그램을 컴파일 할 때

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); 
    } 
} 

는 나는 다음과 같은 오류가 발생합니다 /2.0. Mono.Cecil.dll은/usr/lib/monodevelop/bin/

에만 있습니다.

제가 누락 된 것이 있으면 알려주시겠습니까? 어떻게이 오류를 없앨까요 ???

감사

Puliyan는

+0

위치에 관계없이 프로젝트에 해당 DLL에 대한 참조를 추가해야합니다. 그렇게 했니? '사용하기'만으로는 충분하지 않습니다. – DonBoitnott

+0

안녕하세요 돈, 나는 내 질문을 명확하게 만들었습니다. 죄송합니다. :) – user2563994

답변

3

당신은 Mono.Cecil.dll을 찾을 수있는 -r, -pkg, 또는 -lib 옵션을 컴파일러에게해야합니다. 항상 소스에서 .dll을 구축하고 작동

해결책 :

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

는 또한 다른 구성을 사용할 수 있습니다 (예를 들어, net_4_0_Debug). 값이 .sln 또는 .csproj 파일인지 확인하십시오. obj 하위 디렉토리에 Mono.Cecil.dll이 있습니다. 그런 다음 해당 라이브러리를 원하는 위치로 복사하고 -r:/path/to/Mono.Cecil.dll, -lib:/path/to/libdirectory -r:Mono.Cecil.dll으로 컴파일하거나 MonoDevelop를 사용하는 경우 라이브러리에 대한 참조를 추가 할 수 있습니다 (MonoDevelop에서는 프로젝트를 직접 참조 할 수 있어야합니다).

일반적으로 Cecil은 pkg-config 메커니즘을 통해 사용할 수도 있습니다. 그러나 cecil.pc 파일의 구성이 잘못되었습니다. 일반적으로, 단지 -pkg:cecil를 사용하는 것은 충분하지만 깨진 것으로 보인다 대신 당신은 같은 것을 사용해야한다 : GAC에 Mono.Cecil.dll의 전체 경로를 얻기 위해

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

합니다.

데비안에서는 모노가 여러 패키지로 나뉘어져 있기 때문에 위의 코드가 작동하지 않으면 추가 라이브러리를 설치해야 할 수도 있습니다. (현재 Cecil이 핵심 패키지의 일부인지는 모르겠습니다. 또는 아닙니다).