Errore 85 Argomento 1: Impossibile convertire da 'System.Reflection.ConstructrucRinfo' a 'mono.cecil.typerFerence'

StackOverflow https://stackoverflow.com//questions/11692617

  •  12-12-2019
  •  | 
  •  

Domanda

Attualmente sto tentando di costruire Gendarme 2.10 usando Visual Studio 2010. Ecco alcuni degli errori che sto ricevendo:

Error   85  Argument 1: cannot convert from 'System.Reflection.ConstructorInfo' to 'Mono.Cecil.TypeReference'   C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\CustomAttributesTests.cs   359 45  Mono.Cecil.Tests
Error   12  Argument 1: cannot convert from 'System.Reflection.FieldInfo' to 'Mono.Cecil.TypeReference' C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\ImportReflectionTests.cs   103 45  Mono.Cecil.Tests
Error   24  Argument 1: cannot convert from 'System.Reflection.FieldInfo' to 'Mono.Cecil.TypeReference' C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\ImportReflectionTests.cs   149 44  Mono.Cecil.Tests
Error   46  Argument 1: cannot convert from 'System.Reflection.FieldInfo' to 'Mono.Cecil.TypeReference' C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\ImportReflectionTests.cs   198 44  Mono.Cecil.Tests
Error   60  Argument 1: cannot convert from 'System.Reflection.FieldInfo' to 'Mono.Cecil.TypeReference' C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\ImportReflectionTests.cs   276 39      Mono.Cecil.Tests
Error   14  Argument 1: cannot convert from 'System.Reflection.MethodInfo' to 'Mono.Cecil.TypeReference'    C:\Tools\mono-tools\external\cecil\Test\Mono.Cecil.Tests\ImportReflectionTests.cs   117 43  Mono.Cecil.Tests
.

Dopo aver rimosso tutti i progetti dei test, ecco gli errori che sto ottenendo:

Error   4   Argument 1: cannot convert from 'System.Type' to 'Mono.Cecil.TypeReference' C:\Tools\mono-tools\gendarme\framework\Gendarme.Framework.Helpers\PrimitiveReferences.cs    53  25  Gendarme.Framework
Error   3   The best overloaded method match for 'Mono.Cecil.ModuleDefinition.Import(Mono.Cecil.TypeReference)' has some invalid arguments  C:\Tools\mono-tools\gendarme\framework\Gendarme.Framework.Helpers\PrimitiveReferences.cs    53  10  Gendarme.Framework
.

Ecco il codice che i due errori di cui sopra si riferiscono a:

static TypeReference GetReference (Type type, IMetadataTokenProvider metadata)
{
    ModuleDefinition module = metadata.GetAssembly ().MainModule;
    TypeReference tr;
    if (!module.TryGetTypeReference (type.FullName, out tr))
        tr = module.Import (type);
    return tr;
}
.

Qualcuno ha qualche suggerimento?Tia.

roger

È stato utile?

Soluzione

Ecco una soluzione temporanea che ho messo insieme.Non esitate a commentare:

    static TypeReference GetReference (Type type, IMetadataTokenProvider metadata)
    {
        ModuleDefinition module = metadata.GetAssembly ().MainModule;
        ModuleKind kind = ModuleKind.Windows;
        ModuleDefinition definition = ModuleDefinition.CreateModule(module.Name, kind);
        Version version = new Version(1, 0);
        AssemblyNameDefinition nameDefinition = new AssemblyNameDefinition(module.Name, version);
        AssemblyDefinition assemblyDefinition = AssemblyDefinition.CreateAssembly(nameDefinition, definition.Name, kind);
        assemblyDefinition = AssemblyDefinition.ReadAssembly(module.Name);
        definition.Assembly = assemblyDefinition;
        IMetadataScope scope = new ModuleReference(module.Name);
        scope.MetadataToken = assemblyDefinition.MetadataToken;

        TypeReference tr = new TypeReference(type.Namespace, type.Name, definition, scope);
        //if (!module.TryGetTypeReference(type.FullName, out tr))
        //    tr = module.Import(type);
        return tr;
    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top