【问题标题】:System.MissingMethodException after upgrading from 2.0.0-preview1-final to 2.0.0-preview2-final从 2.0.0-preview1-final 升级到 2.0.0-preview2-final 后的 System.MissingMethodException
【发布时间】:2017-07-18 04:25:46
【问题描述】:

我刚刚将我的 Visual Studio 更新为预览版 4,并将我的所有软件包从 Core 2.0 Preview 1 Final 更新为 Core 2.0 Preview 2 Final。以下是我升级后的csproj 文件。

<ItemGroup>
    <PackageReference Include="HtmlAgilityPack" Version="1.5.2-beta2" />
    <PackageReference Include="Humanizer.Core" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-preview2-final" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-preview2-final" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0-preview2-final" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0-preview2-final" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0-preview2-final" />
    <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="2.0.0-dev-10164" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="2.4.0" />
    <PackageReference Include="Serilog.Sinks.Literate" Version="3.0.1-dev-00044" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" />
    <PackageReference Include="AutoMapper" Version="6.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.0.0-preview2-final" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.0.0-preview2-final" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0-preview2-final" />
  </ItemGroup>

以下是原始异常详细信息。

System.MissingMethodException: Method not found: 'Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Logging.LoggerFactory.get_Configuration()'.
   at Microsoft.AspNetCore.ApplicationInsights.HostingStartup.ApplicationInsightsLoggerStartupFilter.<>c__DisplayClass0_1.<Configure>b__0(IApplicationBuilder builder)
   at Microsoft.ApplicationInsights.AspNetCore.ApplicationInsightsStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

程序.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using System.IO;

namespace Phoenix
{
    public class AppProgram
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .ConfigureLogging(factory =>
                {
                    factory.AddConsole();
                    factory.AddDebug();
                })
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();
        }
    }
}

Startup.cs(我不得不注释掉 loggerFactory.AddSeriLog() 调用,因为它在我更新所有包后生成错误。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddSwaggerGen(c =>
    {
        // removed for brevity
    });

    // DI statements have been removed for brevity.

    Log.Logger = new LoggerConfiguration()
        .ReadFrom.Configuration(Configuration)
        .CreateLogger();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //loggerFactory.AddSerilog();

    app.UseMvc();

    app.UseSwagger();

    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    });

}

根据来自loggerFactory.AddSerilog(); 的错误消息中的建议,我尝试在我的ConfigureServices 方法中添加services.AddSeriLog()

我也试过安装包Microsoft.Extensions.Logging,也没有修复。

我还尝试从新模板中替换 Program.cs 文件的内容,如下所示。这也没有用。

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

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

有人可以帮我解决这个问题吗?

更新

添加包Microsoft.AspNetCore.All 解决了这个问题。但我真的不想添加这个包,因为这会在这个包中添加许多不需要的引用。

【问题讨论】:

  • 在升级前总是阅读github.com/aspnet/Announcements/milestone/13,它包含新版本的所有重大变化:)
  • 感谢@Tseng,我刚刚完成了重大更改。好像他们没有提到那里的这个包变化。无论如何,至少现在我知道从哪里开始升级。

标签: c# asp.net-core .net-core


【解决方案1】:

需要的包是

Microsoft.Extensions.Logging.Configuration

我添加了解决问题的包。

<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.0.0-preview2-final" />

【讨论】:

  • 我已经添加了这个包,但这次它给出了这样的错误: System.IO.FileLoadException: 'Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51'。找到的程序集的清单定义与程序集引用不匹配。
猜你喜欢
  • 1970-01-01
  • 2022-09-26
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2018-12-30
  • 2017-11-04
  • 1970-01-01
  • 2016-09-14
相关资源
最近更新 更多