2013-07-22 160 views
0

我是C#編程的新手。 我想編譯一個C#程序,它需要單聲道塞西爾命名空間'Mono'中不存在類型或命名空間名'Cecil'

這是我正在編譯的代碼 我dono如何添加引用...有人可以幫我在這?

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

我收到以下錯誤,當我在/usr/lib/mono/4.0 &/usr/lib目錄/單聲道編譯使用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程序/2.0。 Mono.Cecil.dll僅存在於/ usr/lib/monodevelop/bin/

請讓我知道我是否缺少任何東西?以及我如何擺脫這個錯誤?

問候

Puliyan

+0

不管其位置如何,您必須將對該DLL的引用添加到項目中。你有沒有這樣做?僅僅使用''是不夠的。 – DonBoitnott

+0

嘿,唐, 我已經明確了我的問題,抱歉不妥:) – user2563994

回答

3

你需要告訴與-r-pkg,或-lib選擇在哪裏可以找到Mono.Cecil.dll編譯器。

總是工作是建立從源.dll A液:

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中,您還應該能夠直接引用該項目)。

塞西爾通常也應該通過pkg-config機制;但是,cecil.pc文件似乎配置錯​​誤。通常情況下,只用-pkg:cecil應該足夠了,但似乎被打破,而是你必須使用這樣的:爲了獲得完整路徑Mono.Cecil.dll在GAC

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

。另外,因爲mono在Debian下被分割成多個包,所以如果上述操作不起作用,您可能需要安裝額外的庫(目前我還不知道Cecil是否是核心軟件包的一部分或不)。

相關問題