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

Reply via email to