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

Reply via email to