我正在尝试基于现有的卫星程序集生成自定义 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
有人可以告诉我我做错了什么吗?