问题标签 [mono.cecil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1242 浏览

c# - 使用 Mono Cecil 注入属性调用

如何将此代码注入方法中Test()

所以注入后的方法会是这样的:

0 投票
1 回答
385 浏览

.net - 如何使用 Mono.Cecil 确定值类型的大小

我正在寻找一种方法来确定 Mono.Cecil 中值类型(TypeReference)的字节大小。

我需要它来优化 Nullable 相等比较代码生成。

  • 如果值类型大小 > 4,首先比较 HasValue,然后比较值。
  • 如果值类型大小 <= 4,首先比较 GetValueOrDefault,然后比较 HasValue。

但要这样做,我需要以某种方式获取 sizeof(T)。

0 投票
5 回答
474 浏览

wpf - 我们还需要什么样的编译器魔法?

我开发了很多视图模型,它们是:

1)所有人都必须实现 INotifyPropertyChanged 才能绑定到 UI。

2) 属性设置者必须在更改时提高 PropertyChanged。

3) PropertyChanged 事件必须提供正确的属性名称。

如果你(像我一样)不想写这样的东西:

然后像这样重构这个方法,有时会忘记更新属性名称文字:

然后花一天时间调试为什么你的 UI 没有刷新,数据绑定不能正常工作。

那么我们所需要的只是某种魔法。

如果我只需要写这个怎么办:

或者如果我有很多属性:

所以我刚刚开发了一个 MSBuild 任务来在构建后做这个魔术(http://kindofmagic.codeplex.com)。

问题是,您更喜欢哪种神奇的后处理?

INotifyPropertyChanging 的自动实现有意义吗?

0 投票
1 回答
81 浏览

c# - 反映具体的框架版本?

使用 Mono.Cecil

失败是因为我阅读的程序集是 .net 2 但我的程序是 .net 4。所以它试图比较字符串 v2 和字符串 v4,所以它永远不会相等。如何在不使用 .net 2 构建程序的情况下从 v2 获取字符串?

0 投票
3 回答
7257 浏览

c# - Mono.Cecil,缺少编译器所需的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor”

我下载了最新的 Mono.Cecil,现在每当我启动我的项目时,它都会给我这个错误。如果我删除并添加 mono.cecil,它就会消失。但每次我打开我的项目时,这都是一件痛苦的事情。

0 投票
2 回答
3712 浏览

c# - 如何使用 Mono.Cecil 注入对 System.Object.Equals 的调用?

使用 Mono.Cecil 我想重写以下属性:

对此:

这只是重写的一小部分,但这是我遇到问题的地方。

使用反射器我可以看到以下代码根据需要重写属性,除了对 System.Object.Equals() 的调用。如果期望 IL 代码为:

但它被写成:

编写对 System.Object.Equals 的调用的代码是:

用于初始化 objectEqualsMethodReference 的方法是:

在我看来 setMethodWriter.Create() 或 GetSystemObjectEqualsMethodReference() 是不正确的,并且没有多少调试可以解决问题。

正在编写的属性和重写该属性的代码具有相同的框架目标。3.5 和 4.0 都失败了。

我正在使用主分支https://github.com/jbevain/cecil来构建 Mono.Cecil。

完整的代码清单

0 投票
1 回答
1255 浏览

c# - 使用 Mono.Cecil 注入 GeneratedCodeAttribute

我正在使用 Mono.Cecil 操作我的 .net 2.0 程序集。操作后,我想通过注入模块属性将程序集标记为已处理

保存程序集后,它依赖于 .net 4.0,因为操作应用程序是用 .net 4.0 编写的。GeneratedCodeAttribute 存在于 .net 2.0 中,那我做错了什么?

0 投票
2 回答
3500 浏览

mono - 我在哪里可以获得 Mono.Cecil.Pdb.dll?

我正在尝试使用 Mono.Cecil 编写一个 IL Weaver,并且为了使其在 VS2010 中保持可调试性,我需要 PdbReaderProvider 类或一些类似的 ISymbolProvider 实现。我从http://mono.ximian.com/daily/下载了最新的 Mono dll ,但在 zip 中没有 Mono.Cecil.Pdb.dll。我已经从https://github.com/jbevain/cecil/tree/master/Mono.Cecil下载了源代码,但我似乎无法在 .net 4 下编译该特定项目
。有人可以帮忙吗我出来指向 Mono.Cecil.Pdb 的已编译工作 .net dll,最好在里面有一个工作 PdbReaderProvider?

0 投票
1 回答
304 浏览

c# - Mono.Cecil:操作可能在运行时不稳定

我按照这里的提示,我什至把以下几行放进去:

我在两个类中有两个属性:

生成的 IL 代码完全相同,当然除了属性名称和支持字段的类型。然而第一个抛出 VerificationException (“操作可能破坏运行时”),第二个没有。我可能做错了什么?

编辑:这是有问题的 IL:

0 投票
1 回答
2000 浏览

c# - 使用 Mono.Cecil 查找类型层次结构程序集

我正在尝试实现一个接收类型并返回包含其基类型的所有程序集的方法。

例如:
A是基类型(类A属于程序集c:\A.dll
B继承自A(类B属于程序集c:\B.dll
C继承自B(类C属于程序集c:\c.dll

我的主要问题是AssemblyDefinitionMono.Cecil 不包含任何像Location这样的属性。

如何在给定的情况下找到装配位置AssemblyDefinition