Я пытаюсь создать собственную DLL на основе существующей спутниковой сборки. Я хочу, чтобы новая DLL содержала некоторые ресурсы по моему выбору.
Ниже мой код:
private void GenerateTargetAssembly()
{
var sourceDll = @"d:\input.dll";
var targetDll = @"d:\output.dll";
AssemblyDefinition ad = AssemblyDefinition.ReadAssembly(sourceDll);
ad.MainModule.Resources.Clear();
Stream stream = new MemoryStream();
ResourceWriter rw = new ResourceWriter(stream);
rw.AddResource("test", "val");
rw.AddResource("test1","val1");
rw.Generate();
EmbeddedResource er = new EmbeddedResource("resName",
ManifestResourceAttributes.Public, stream);
ad.MainModule.Resources.Add(er);
ad.Write(targetDll);
}
Однако в строке ad.Write(@"d:\test.dll") я получаю ошибку операция недействительна из-за текущего состояния объекта. Тип исключения: InvalidOperationException
Может ли кто-нибудь сказать мне, что я делаю неправильно?