首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mono.Cecil编写程序集

使用Mono.Cecil编写程序集
EN

Stack Overflow用户
提问于 2015-07-18 22:31:39
回答 2查看 1.8K关注 0票数 3

我正在尝试使用AppDomain编写当前加载到Mono.Cecil中的程序集,并且我一直收到一个IO错误,表示该文件正在使用。现在我要做的是使用AssemblyDefinitiion.Create()创建一个程序集,进行任何必要的修改,而不是使用AssemblyDefinition.Write()编写程序集。根据我对Mono.Cecil的理解,应该可以对现有的程序集进行编写,但是还有其他步骤可以这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-02 20:40:44

对于0.10.0,添加ReaderParameters有助于实现以下操作:

代码语言:javascript
复制
using (AssemblyDefinition a = AssemblyDefinition.ReadAssembly(file, new ReaderParameters { ReadWrite = true }))
{
    var assemblyFileVersionCtor = a.CustomAttributes.Where(attribute => attribute.AttributeType.FullName == typeof(AssemblyFileVersionAttribute).FullName)
        .FirstOrDefault();

    if (assemblyFileVersionCtor != null)
    {
        assemblyFileVersionCtor.ConstructorArguments[0] = new CustomAttributeArgument(a.MainModule.TypeSystem.String, versionToSet.ToString());
        a.Write();
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-03-27 09:48:53

我还必须将InMemory属性的ReaderParameters设置为true。

代码语言:javascript
复制
var rp = new ReaderParameters();
rp.ReadingMode = ReadingMode.Immediate;
rp.ReadWrite = true;
rp.InMemory = true;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31496200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档