Как я могу заменить встроенные ресурсы на сборке .NET программно?

Я пытаюсь заменить ресурс файла exe (.NET, С#) с помощью кода С#.

Я нашел эту статью и сделал этот код (используя 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 (оба они оба).

Я тестировал код и удалял работу (могу сказать по размеру файла) и добавление тоже, но новый файл разбился так же, как и файл i, созданный только с удалением (для тестирования) - он как он не может видеть замененный ресурс.

Что я могу сделать, чтобы исправить это? возможно, некоторые изменения в отредактированном EXE файле? EXE файл читает его ресурс таким образом: byte[] buffer = ProjectName.Properties.Resources.encFile;

Ответы