【问题标题】:InvalidOperationException : Operation is not valid due to the current state of the object with Mono.CecilInvalidOperationException : 由于 Mono.Cecil 对象的当前状态,操作无效
【发布时间】:2013-06-28 10:50:02
【问题描述】:

我正在尝试基于现有卫星程序集生成自定义 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

谁能告诉我我做错了什么?

【问题讨论】:

    标签: invalidoperationexception mono.cecil


    【解决方案1】:

    这是因为 DLL 的版本不是最新的。我不再得到特定的例外。但是,我似乎无法将资源写入某个流。我必须写入一个临时文件,然后从该文件中读取并写入目标程序集。 有没有人有一个有效的例子?

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多