“ IHostingEnvironment”已过时

时间:2019-04-09 22:01:29

标签: asp.net-core .net-core asp.net-core-3.0

我将项目更新为.NETCORE v3.0.0-preview3,现在我得到了:

  

Startup.cs(75,50,75,69):警告CS0618:“ IHostingEnvironment”为   已过时:此类型已过时,以后会删除   版。推荐的替代方法是   Microsoft.AspNetCore.Hosting.IWebHostEnvironment。'

代码是:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
  if (env.IsDevelopment()) {
    ...

现在执行此操作的正确方法是什么?是否有任何文档/示例可以证明这一点?

3 个答案:

答案 0 :(得分:2)

  

在2.1中引入Microsoft.Extensions.Hosting时,从 IHostingEnvironment 复制了一些类型,例如IApplicationLifetimeMicrosoft.AspNetCore.Hosting。某些3.0更改导致应用程序同时包含 Microsoft.Extensions.Hosting Microsoft.AspNetCore.Hosting 名称空间。引用两个名称空间时,对这些重复类型的任何使用都会导致“模糊引用”编译器错误。

     

3.0.0-preview3 中已解决此错误,方法是将以下类型标记为过时并将其替换为新类型。对新类型没有任何行为上的更改,仅是命名。

     

过时的类型(警告):

     

Microsoft.Extensions.Hosting.IHostingEnvironment
  Microsoft.AspNetCore.Hosting.IHostingEnvironment
  Microsoft.Extensions.Hosting.IApplicationLifetime
  Microsoft.AspNetCore.Hosting.IApplicationLifetime
  Microsoft.Extensions.Hosting.EnvironmentName
  Microsoft.AspNetCore.Hosting.EnvironmentName

     

新类型:

     

Microsoft.Extensions.Hosting.IHostEnvironment
  Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
  Microsoft.Extensions.Hosting.IHostApplicationLifetime
  Microsoft.Extensions.Hosting.Environments

     

请注意,新的IHostEnvironment IsDevelopment,IsProduction等扩展方法位于Microsoft.Extensions.Hosting命名空间中,可能需要将其添加到您的应用程序中。

     

对于3.0,新旧类型都可以从HostBulder和WebHostBuilder的依赖项注入容器中获得。旧类型将在4.0中删除。

来源:https://github.com/aspnet/AspNetCore/issues/7749

总之,您现在正在寻找IWebHostEnvironment。您可能还需要为Microsoft.Extensions.Hosting添加using。

答案 1 :(得分:1)

似乎IHostingEnvironment已被IHostEnvironment(及其他一些人)取代。 您应该能够在代码中更改接口类型,并且一切将按以前的方式工作:-)

您可以在GitHub的此链接上找到有关更改的更多信息。 https://github.com/aspnet/AspNetCore/issues/7749

答案 2 :(得分:1)

对于 env.IsDevelopment(),我使用了 env.EnvironmentName.Equals("Development")