【发布时间】: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