我正在尝试使用AppDomain编写当前加载到Mono.Cecil中的程序集,并且我一直收到一个IO错误,表示该文件正在使用。现在我要做的是使用AssemblyDefinitiion.Create()创建一个程序集,进行任何必要的修改,而不是使用AssemblyDefinition.Write()编写程序集。根据我对Mono.Cecil的理解,应该可以对现有的程序集进行编写,但是还有其他步骤可以这样做吗?
发布于 2018-11-02 20:40:44
对于0.10.0,添加ReaderParameters有助于实现以下操作:
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();
}
}发布于 2019-03-27 09:48:53
我还必须将InMemory属性的ReaderParameters设置为true。
var rp = new ReaderParameters();
rp.ReadingMode = ReadingMode.Immediate;
rp.ReadWrite = true;
rp.InMemory = true;https://stackoverflow.com/questions/31496200
复制相似问题