Hi,
I am receiving a NotSupportedException when trying to read a
MemberReferency using its token from
System.ServiceModel, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
(found at: c:\windows\assembly
\NativeImages_v4.0.30319_32\System.ServiceModel
\8964b15d32028ef9dfe776216af8524d\System.ServiceModel.ni.dll)
The MetadataToken I am trying to read was: 167776355
I got it from a MemberReference that I aquired using
assembly.MainModule.GetMemberReferences(). The MemberReference-
ToString() is:
"System.AsyncCallback
System.ServiceModel.Channels.ReliableChannelBinder`1/CloseAsyncResult<!
0>::onBinderCloseComplete"
I can reproduces this behaviour using the following code:
class Program
{
static void Main(string[] args)
{
var assemblyDefinition =
AssemblyDefinition.ReadAssembly(@"c:\windows\assembly
\NativeImages_v4.0.30319_32\System.ServiceModel
\8964b15d32028ef9dfe776216af8524d\System.ServiceModel.ni.dll");
var metadataTokenProvider =
assemblyDefinition.MainModule.LookupToken(167776355);
}
}
Here is the callstack:
Mono.Cecil.dll!
Mono.Cecil.SignatureReader.GetGenericParameter(Mono.Cecil.GenericParameterType
type = Type, uint var = 0) Line 2520 C#
Mono.Cecil.dll!
Mono.Cecil.SignatureReader.ReadTypeSignature(Mono.Cecil.Metadata.ElementType
etype = Var) Line 2639 + 0x36 bytes C#
Mono.Cecil.dll!Mono.Cecil.SignatureReader.ReadTypeSignature() Line
2602 + 0x1c bytes C#
Mono.Cecil.dll!
Mono.Cecil.SignatureReader.ReadGenericInstanceSignature(Mono.Cecil.IGenericParameterProvider
provider = {System.ServiceModel.Channels.ReliableChannelBinder`1/
CloseAsyncResult}, Mono.Cecil.IGenericInstance instance =
{System.ServiceModel.Channels.ReliableChannelBinder`1/
CloseAsyncResult<>}) Line 2561 + 0xe bytes C#
Mono.Cecil.dll!
Mono.Cecil.SignatureReader.ReadTypeSignature(Mono.Cecil.Metadata.ElementType
etype = GenericInst) Line 2647 + 0xe bytes C#
Mono.Cecil.dll!Mono.Cecil.SignatureReader.ReadTypeSignature() Line
2602 + 0x1c bytes C#
Mono.Cecil.dll!Mono.Cecil.MetadataReader.GetTypeSpecification(uint
rid = 897) Line 1040 + 0xa bytes C#
Mono.Cecil.dll!
Mono.Cecil.MetadataReader.LookupToken(Mono.Cecil.MetadataToken token =
{[TypeSpec:0x0381]}) Line 1917 + 0xb bytes C#
Mono.Cecil.dll!
Mono.Cecil.MetadataReader.GetTypeDefOrRef(Mono.Cecil.MetadataToken
token = {[TypeSpec:0x0381]}) Line 900 + 0xb bytes C#
Mono.Cecil.dll!
Mono.Cecil.MetadataReader.ReadTypeMemberReference(Mono.Cecil.MetadataToken
type = {[TypeSpec:0x0381]}, string name = "onBinderCloseComplete",
uint signature = 5318) Line 2059 + 0xb bytes C#
Mono.Cecil.dll!Mono.Cecil.MetadataReader.ReadMemberReference(uint
rid = 4195) Line 2043 + 0x11 bytes C#
Mono.Cecil.dll!Mono.Cecil.MetadataReader.GetMemberReference(uint rid
= 4195) Line 2022 + 0xb bytes C#
Mono.Cecil.dll!
Mono.Cecil.MetadataReader.LookupToken(Mono.Cecil.MetadataToken token =
{[MemberRef:0x1063]}) Line 1926 + 0xb bytes C#
Mono.Cecil.dll!
Mono.Cecil.ModuleDefinition.LookupToken.AnonymousMethod(Mono.Cecil.ModuleDefinition
_ = {System.ServiceModel.dll}, Mono.Cecil.MetadataReader reader =
{Mono.Cecil.MetadataReader}) Line 739 + 0x10 bytes C#
Mono.Cecil.dll!
Mono.Cecil.ModuleDefinition.Read<Mono.Cecil.ModuleDefinition,Mono.Cecil.IMetadataTokenProvider>(Mono.Cecil.ModuleDefinition
item = {System.ServiceModel.dll},
Mono.Func<Mono.Cecil.ModuleDefinition,Mono.Cecil.MetadataReader,Mono.Cecil.IMetadataTokenProvider>
read = {Method = {Mono.Cecil.IMetadataTokenProvider
<LookupToken>b__18(Mono.Cecil.ModuleDefinition,
Mono.Cecil.MetadataReader)}}) Line 747 + 0x14 bytes C#
Mono.Cecil.dll!
Mono.Cecil.ModuleDefinition.LookupToken(Mono.Cecil.MetadataToken token
= {[MemberRef:0x1063]}) Line 739 + 0x31 bytes C#
Mono.Cecil.dll!Mono.Cecil.ModuleDefinition.LookupToken(int token =
167776355) Line 734 + 0x1b bytes C#
>
> ShortNameIndex.exe!DebugExtensions.Features.Navigator.Logic.ShortNameIndexer.GetMemberReferences(ShortNameIndex.SymbolCache
> cache = {ShortNameIndex.SymbolCache}, string[] assemblies = {string[1999]},
> string searchExpression = "BIC") Line 176 + 0x2f bytes C#
Could it have anything to do with me running on a .NET 2 CLR and
reading .NET 4 Assemblies?
Do you have any Idea what could help?
Thanks a lot and keep up the great work!
Best regards Florian
--
--
mono-cecil