我正在寻找一种方法来制作C#DLL文件的可分发补丁.虽然我能够找到像dnSpy这样的东西,它允许打开和编辑DLL,但我正在寻找一种将我的编辑分发给其他人的方法,而不是分发整个修改后的DLL.有什么工具可以做到这一点吗?

推荐答案

这就是你要找的机器人:

https://github.com/0xd4d/dnlib

您可以直接在C#补丁程序可执行文件中进行所有类型的编辑,例如:

// Load the original assembly
ModuleDefMD module = ModuleDefMD.Load(originalExe);

//Iterate through all types to find the class inheriting from MyClass
TypeDef targetClass = FindClassInheritingFrom(module, "MyClass");

//edit the constructor
var ctor = targetClass.Methods.First(x => x.IsConstructor);
//replace some line with nop
ctor.Body.Instructions[5] = OpCodes.Nop.ToInstruction();
ctor.Body.UpdateInstructionOffsets();

// Save the modified assembly with a different name
module.Write(newName);

Csharp相关问答推荐

在C#中使用in修饰符

Monty Hall游戏节目模拟给我50/50的结果

程序集.加载从exe的异常

属性getter和setter之间的空性不匹配?

`Task`只有在C#中等待时才会运行吗?

应用程序启动器,可 Select 物理屏幕

C#XmlSerializer-输出控制新行的多个XML片段

为什么我的表单在绑定到对象时提交空值?

JSON空引用异常仅在调试器中忽略try-Catch块,但在其他上下文中捕获得很好

如何使用C#中的主构造函数功能使用多个构造函数?

WinForms在Linux上的JetBrains Rider中的应用

如何使用XmlSerializer序列化带有CDATA节的XML文件?

Swagger没有显示int?可以为空

带有列表参数的表达式树

为什么我的用户界面对象移动到略低于实际目标?

在同一个捕获中可以有多种类型的异常吗?

使用DI实例化带有动态参数的服务?

如何在Cake脚本中设置MSBuild.exe的绝对路径

ASP.NET核心中的授权,如何在DbContext启动之前提供租用ID

读取测试项目中的应用程序设置