System.MethodAccessException: '尝试通过方法'Microsoft.Extensions.Logging.Configuration 问题

cha*_*a k 6 c# exception asp.net-core

在 .NETCore 中,在Program.cs文件中运行应用程序时CreateWebHostBuilder(args).Build().Run();

我收到异常

“System.MethodAccessException:'尝试通过方法'Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)'访问方法'Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias(System.Type)'失败。'”

在方法

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

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

如何解决这个问题。我尝试通过卸载和安装 Microsoft.AspNetCore 但没有用,请查看我的依赖项的屏幕截图我在项目中添加的依赖项

除了 Microsoft.Extension.Logging 之外,所有版本的依赖项都相同。版本差异有什么问题吗。有人可以帮我解决这个问题吗?

Pie*_*ano 5

异常表明问题存在于“Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory”(包含在 Microsoft.Extensions.Logging.Configuration 程序集中)。

正如微软在这里所说: https: //learn.microsoft.com/en-us/dotnet/api/system.methodaccessexception ?redirectedfrom=MSDN&view=net-5.0

在以下情况下会引发 MethodAccessException 异常:

  • 无法从正常编译代码访问的私有、受保护或内部方法可以通过使用反射从部分受信任的代码访问。
  • 类库中方法的访问级别已更改,并且引用该库的一个或多个程序集尚未重新编译。

基本上,您引用了 Microsoft.Extensions.Logging '3.1.6',但又引用了 Microsoft.Extensions.Configuration.Logging 版本'2.2.0',并且该程序集肯定是在 Microsoft.Extensions.Logging '3.1 之前编译的.6'

所有这些都可以通过在项目中修改/添加显式包引用来解决:


pho*_*att 1

您的应用程序正在使用 dot net core 版本 2.2。包依赖项中的版本不匹配会导致此问题。您可以在包管理器控制台中使用以下命令行重新安装正确的版本吗?

Install-Package Microsoft.Extensions.Logging -Version 2.2.0
Run Code Online (Sandbox Code Playgroud)

如果您使用.net core cli,请使用以下命令

dotnet add package Microsoft.Extensions.Logging --version 2.2.0
Run Code Online (Sandbox Code Playgroud)

或者直接编辑 csproj 文件中的包引用,找到以下行并替换版本号,然后恢复包。

<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
Run Code Online (Sandbox Code Playgroud)