5
votes

System.MethodAccessException: 'Tentative par méthode' Problème de Microsoft.Extensions.Logging.Configuration

En .NETCore, Pendant l' exécution de l'application dans Program.cs fichier à CreateWebHostBuilder(args).Build().Run();

Je reçois l'exception

"System.MethodAccessException: 'Tentative par la méthode' Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration (System.Type) 'pour accéder à la méthode' Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias (System.Type) 'a échoué."

dans la méthode

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }

Comment résoudre ce problème. J'ai essayé en désinstallant et en installant Microsoft.AspNetCore mais cela ne sert à rien, veuillez voir la capture d'écran de mes dépendances dépendances que j'ai ajoutées au projet

Sauf theMicrosoft.Extension.Logging toutes les versions des dépendances sont identiques. y a-t-il un problème cette différence de version. quelqu'un peut-il m'aider à résoudre ce problème.


3 commentaires

Votre projet se construit-il avec succès?


Oui. Mon projet se construit avec succès


Pourquoi installez-vous Microsoft.AspNetCore au lieu de Microsoft.AspNetCore.App et pourquoi seule la version de Microsoft.Extensions.Logging est 3.1.0 qui devrait également être 2.2.0?


3 Réponses :


0
votes

Votre application utilise la version 2.2 de dot net core. La non-concordance de version dans votre dépendance de package est à l'origine de ce problème. Pouvez-vous réinstaller la version correcte à l'aide de la ligne de commande suivante dans la console du gestionnaire de package?

<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />

si vous utilisez .net core cli, utilisez la commande suivante

dotnet add package Microsoft.Extensions.Logging --version 2.2.0

ou éditez directement la référence du package dans le fichier csproj, recherchez la ligne suivante et remplacez le numéro de version puis restaurez les packages.

Install-Package Microsoft.Extensions.Logging -Version 2.2.0


1 commentaires

Lorsque j'essaye de faire installer Microsoft.Extensions.Logging -Version 2.2.0, cela donne le message d'erreur `` Retrait de package détecté: Microsoft.Extensions.Logging de 3.1.0 à 2.2.0. Référencez le package directement à partir du projet pour sélectionner une version différente. '



0
votes

Quand je crée un projet ASP.NET 2.2 et ajoute le package Microsoft.EntityFrameworkCore 3.1, j'obtiens la même erreur.

La solution consiste à mettre à jour tous les packages Microsoft.Extensions.Logging. * Vers la version 3.1.


0 commentaires

1
votes

L'exception indique que le problème réside dans «Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory» (contenu dans l'assembly Microsoft.Extensions.Logging.Configuration).

Comme Microsoft le dit ici: https://docs.microsoft.com/en-us/dotnet/api/system.methodaccessexception?redirectedfrom=MSDN&view=net-5.0

L'exception MethodAccessException est levée dans des situations telles que les suivantes:

  • Une méthode privée, protégée ou interne qui ne serait pas accessible à partir du code compilé normal est accessible à partir d'un code partiellement approuvé à l'aide de la réflexion.
  • Le niveau d'accès d'une méthode dans une bibliothèque de classes a changé et un ou plusieurs assemblys qui référencent la bibliothèque n'ont pas été recompilés.

Fondamentalement, vous avez une référence à Microsoft.Extensions.Logging '3.1.6', mais une autre référence à Microsoft.Extensions.Configuration.Logging version '2.2.0', et cet assembly a sûrement été compilé avant Microsoft.Extensions.Logging '3.1 .6 '

Tout peut être résolu en modifiant / ajoutant une référence de package explicite dans votre projet:


0 commentaires