相关疑难解决方法(0)

在运行时动态生成DLL程序集

目前我有一些动态生成的代码.换句话说,C#.cs文件是由程序动态创建的,目的是将此C#文件包含在另一个项目中.

挑战在于我想生成一个.DLL文件,而不是生成一个C#.cs文件,以便它可以被任何类型的.NET应用程序(不仅仅是C#)引用,因此更有用.

.net c# dll code-generation

31
推荐指数
3
解决办法
4万
查看次数

如何以编程方式替换.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# ×2

.net ×1

add ×1

code-generation ×1

dll ×1

edit ×1

mono.cecil ×1

resources ×1