I am trying to remove a duplicate assembly reference in one of my
assemblies.
I am using version 0.9.3.0
AssemblyDefinition asmDef =
AssemblyDefinition.ReadAssembly(filename);
AssemblyNameReference asmRefName = "my assembly ref
name";
asmDef.MainModule.AssemblyReferences.Remove(asmRefName);
asmDef.Write(newFn); // throws exception
asmDef.MainModule.Write("test.txt"); // also throws
exception
Removing assembly references used to work in 0.6.9.0, now I get the
exception:
System.ArgumentOutOfRangeException: Specified argument was out of the
range of valid values.
at Mono.Collections.Generic.Collection`1.get_Item(Int32 index) in C:
\temp\jbevain-cecil-5df660e\Mono.Collections.Generic
\Collection.cs:line 48
at Mono.Cecil.MetadataReader.GetTypeReferenceScope(MetadataToken
scope) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil
\AssemblyReader.cs:line 999
at Mono.Cecil.MetadataReader.ReadTypeReference(UInt32 rid) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 976
at Mono.Cecil.MetadataReader.GetTypeReference(UInt32 rid) in C:\temp
\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 957
at Mono.Cecil.MetadataReader.LookupToken(MetadataToken token) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 1886
at Mono.Cecil.MetadataReader.GetTypeDefOrRef(MetadataToken token)
in C:\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 897
at Mono.Cecil.SignatureReader.GetTypeDefOrRef(MetadataToken token)
in C:\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line
2548
at Mono.Cecil.SignatureReader.ReadTypeSignature(ElementType etype)
in C:\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line
2565
at Mono.Cecil.SignatureReader.ReadTypeSignature() in C:\temp
\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 2553
at Mono.Cecil.SignatureReader.ReadMethodSignature(IMethodSignature
method) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil
\AssemblyReader.cs:line 2652
at Mono.Cecil.MetadataReader.ReadMemberReferenceSignature(UInt32
signature, TypeReference declaring_type) in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 2054
at Mono.Cecil.MetadataReader.ReadTypeMemberReference(MetadataToken
type, String name, UInt32 signature) in C:\temp\jbevain-cecil-5df660e
\Mono.Cecil\AssemblyReader.cs:line 2034
at Mono.Cecil.MetadataReader.ReadMemberReference(UInt32 rid) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 2014
at Mono.Cecil.MetadataReader.GetMemberReference(UInt32 rid) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 1994
at Mono.Cecil.MetadataReader.LookupToken(MetadataToken token) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyReader.cs:line 1898
at Mono.Cecil.Cil.CodeReader.PatchRawCode(ByteBuffer buffer, Int32
code_size, CodeWriter writer) in C:\temp\jbevain-cecil-5df660e
\Mono.Cecil.Cil\CodeReader.cs:line 514
at Mono.Cecil.Cil.CodeReader.PatchRawFatMethod(ByteBuffer buffer,
MethodSymbols symbols, CodeWriter writer, MetadataToken&
local_var_token) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil.Cil
\CodeReader.cs:line 441
at Mono.Cecil.Cil.CodeReader.PatchRawMethodBody(MethodDefinition
method, CodeWriter writer, MethodSymbols& symbols) in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil.Cil\CodeReader.cs:line 408
at
Mono.Cecil.Cil.CodeWriter.WriteUnresolvedMethodBody(MethodDefinition
method) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil.Cil
\CodeWriter.cs:line 86
at Mono.Cecil.Cil.CodeWriter.WriteMethodBody(MethodDefinition
method) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil.Cil
\CodeWriter.cs:line 66
at Mono.Cecil.MetadataBuilder.AddMethod(MethodDefinition method) in
C:\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 1446
at Mono.Cecil.MetadataBuilder.AddMethods(TypeDefinition type) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 1441
at Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type) in C:
\temp\jbevain-cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 1276
at Mono.Cecil.MetadataBuilder.AddTypeDefs() in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 1250
at Mono.Cecil.MetadataBuilder.BuildTypes() in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 1106
at Mono.Cecil.MetadataBuilder.BuildModule() in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 890
at Mono.Cecil.MetadataBuilder.BuildMetadata() in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 863
at Mono.Cecil.ModuleWriter.<BuildMetadata>b__0(MetadataBuilder
builder, MetadataReader _) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil
\AssemblyWriter.cs:line 135
at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3
read) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil
\ModuleDefinition.cs:line 704
at Mono.Cecil.ModuleWriter.BuildMetadata(ModuleDefinition module,
MetadataBuilder metadata) in C:\temp\jbevain-cecil-5df660e\Mono.Cecil
\AssemblyWriter.cs:line 134
at Mono.Cecil.ModuleWriter.WriteModuleTo(ModuleDefinition module,
Stream stream, WriterParameters parameters) in C:\temp\jbevain-
cecil-5df660e\Mono.Cecil\AssemblyWriter.cs:line 110
at Mono.Cecil.ModuleDefinition.Write(Stream stream,
WriterParameters parameters) in C:\temp\jbevain-cecil-5df660e
\Mono.Cecil\ModuleDefinition.cs:line 871
at Mono.Cecil.ModuleDefinition.Write(String fileName,
WriterParameters parameters) in C:\temp\jbevain-cecil-5df660e
\Mono.Cecil\ModuleDefinition.cs:line 860
at Mono.Cecil.ModuleDefinition.Write(String fileName) in C:\temp
\jbevain-cecil-5df660e\Mono.Cecil\ModuleDefinition.cs:line 849
at UpdateAssemblyRefs.Form1.UpdateAssemblies() in C:\work\Apps
\Utilities\UpdateAssemblyRefs\Form1.cs:line 216
at UpdateAssemblyRefs.Form1.DoUpdate(Object parameter) in C:\work
\Apps\Utilities\UpdateAssemblyRefs\Form1.cs:line 89
--
--
mono-cecil