gpt4 book ai didi

c# - 命名空间 'Cecil' 中不存在类型或命名空间名称 'Mono'

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:45 29 4
gpt4 key购买 nike

我是 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.Cecil.dll。Mono.Cecil.dll 仅存在于/usr/lib/monodevelop/bin/

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

问候

蒲丽燕

最佳答案

您需要使用 -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,请添加对库的引用(在 MonoDevelop 中,您也应该能够直接引用该项目)。

Cecil 通常也可以通过 pkg-config 机制获得;但是,cecil.pc 文件似乎配置错​​误。通常,只需使用 -pkg:cecil 就足够了,但这似乎已损坏,您必须使用类似的东西:

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

为了在 GAC 中获取 Mono.Cecil.dll 的完整路径。

此外,因为在 Debian 下,mono 被拆分成许多包,如果以上方法不起作用,您可能必须安装额外的库(目前我不知道 Cecil 是否是核心包的一部分,或者不是)。

关于c# - 命名空间 'Cecil' 中不存在类型或命名空间名称 'Mono',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792246/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com