小编era*_*anj的帖子

如何以编程方式替换.NET程序集中的嵌入资源?

我正在尝试使用C#代码替换exe(.NET,C#)文件的资源.

我找到了这篇文章并制作了这段代码(使用Mono.Cecil 0.6):

AssemblyDefinition asdDefinition = AssemblyFactory.GetAssembly("C:\\File.exe");
EmbeddedResource erTemp = new EmbeddedResource("encFile", ManifestResourceAttributes.Public);
erTemp.Data = myNewFileBytes;
asdDefinition.MainModule.Resources.RemoveAt(0);
asdDefinition.MainModule.Resources.Add(erTemp);
AssemblyFactory.SaveAssembly(asdDefinition, "C:\\newFile.exe");
Run Code Online (Sandbox Code Playgroud)

代码实际上是删除资源,然后添加一个具有相同名称的新资源.资源名称encFile存储为encFile.exe(两者都尝试过).

我测试了代码,删除工作(我可以通过文件的大小来判断)和添加,但新文件崩溃就像我用仅删除创建的文件(用于测试) - 它就像他一样看不到被替换的资源.

我该怎么做才能解决这个问题?可能在编辑的EXE文件中有一些变化?EXE文件以这种方式读取其资源: byte[] buffer = ProjectName.Properties.Resources.encFile;

c# resources edit add mono.cecil

16
推荐指数
1
解决办法
1万
查看次数

C#Activator.CreateInstance()删除"无法创建抽象类"异常

我试图动态加载.DLL文件并运行其中一个方法(实际上只有一个方法..)但Activator.CreateInstance方法删除"无法创建一个抽象类"异常这是我的代码:

Assembly assembly = Assembly.Load(DLLByteArray);
//Type typeToExecute = assembly.GetType("ClassLibrary1.Class1");
//last line was replaced with the next one to ensure that the name is correct.
Type typeToExecute = assembly.GetTypes()[0];
Object instance = Activator.CreateInstance(typeToExecute);
Run Code Online (Sandbox Code Playgroud)

如果需要,减速等级:" public static unsafe class Class1".

.DLL类代码中的任何内容都可能导致此类异常吗?

c# dll activator

2
推荐指数
2
解决办法
5885
查看次数

标签 统计

c# ×2

activator ×1

add ×1

dll ×1

edit ×1

mono.cecil ×1

resources ×1