如何以编程方式替换.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"); 

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

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

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

尝试检查下面的代码项目文章可能会有所帮助

http://www.codeproject.com/KB/dotnet/embeddedresources.aspx