类型或命名空间名称';Cecil';不存在于命名空间';Mono';

本文关键字:命名空间 不存在 Mono Cecil 类型 | 更新日期: 2023-09-27 18:24:11

我是C#编程的新手。我正在尝试编译一个需要mono-cecil 的C#程序

这是我试图编译的代码我不知道如何添加参考。。。有人能帮我吗?

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?

我在/usr/lib/Mono/4.0&usr/lib/mono/2.0。Mono.ecil.dll仅存在于/usr/lib/monodevelop/bin/中

如果我遗漏了什么,请告诉我?我该如何摆脱这个错误???

问候

Puliyan

类型或命名空间名称';Cecil';不存在于命名空间';Mono';

您需要用-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文件中的值。您可以在obj子目录中找到Mono.Cecil.dll。然后,您可以将该库复制到您想要的任何位置,并使用-r:/path/to/Mono.Cecil.dll-lib:/path/to/libdirectory -r:Mono.Cecil.dll进行编译,或者如果您使用的是MonoDevelop,则添加对该库的引用(在MonoDevelopment中,您也应该能够直接引用项目)。

Cecil通常也应该通过pkg-config机制可用;然而,cecil.pc文件似乎配置错误。通常,只使用-pkg:cecil就足够了,但这似乎已经被破坏了,因此您必须使用以下内容:

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

以便在GAC中获得到CCD_ 16的完整路径。

此外,由于mono在Debian下被拆分为多个包,如果以上不起作用,您可能不得不安装额外的库(我目前不知道Cecil是否是核心包的一部分)。