如何删除所有DebuggerHiddenAttribute

时间:2013-08-09 16:34:31

标签: c# mono mono.cecil

只有在编译器生成此属性时,如何从程序集中删除所有DebuggerHiddenAttribute?

我正在尝试使用此代码,但它不起作用。

    ModuleDefinition module = ...;
MethodDefinition targetMethod = ...;
MethodReference attributeConstructor = module.Import(
    typeof(DebuggerHiddenAttribute).GetConstructor(Type.EmptyTypes));

targetMethod.CustomAttributes.Remove(new CustomAttribute(attributeConstructor));
module.Write(...);

提前致谢。

1 个答案:

答案 0 :(得分:0)

这实际上是不可能的。已编译程序集中定义的属性是不可变的。如果不复制整个组件,则无法更改它们。

在这个特定的答案中,当你调用Remove时,它会被CustomAttributes属性返回的数组调用。它将从数组中删除它,而不是从程序集中的元数据中删除它