我是Cecil的新手,我创建了一个简单的测试。它将所有名称空间/类型重命名为随机字符串。
var assembly = AssemblyDefinition.ReadAssembly(@"C:\somexe.exe");
foreach (var t in assembly.MainModule.Types) {
t.Namespace = Guid.NewGuid().ToString();
t.Name = Guid.NewGuid().ToString();
}
启动可执行文件后运行,但是使用空表单(它是winforms)。
我以为CLR不关心名字?我不该重命名的是什么?或者我做错了什么?
答案 0 :(得分:2)
许多事情,尤其是winforms,都依赖于反思。反思非常关心名字。这也可能与资源和资源文件不匹配有关。此外,许多属性可能包括类型信息作为字符串,这可能会影响事物。可以序列化(特别是BinaryFormatter)。
但是,如果没有更多的上下文(主要是代码),我们只能猜测。