我将项目更新为.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()) {
...
现在执行此操作的正确方法是什么?是否有任何文档/示例可以证明这一点?
答案 0 :(得分:2)
在2.1中引入
Microsoft.Extensions.Hosting
时,从IHostingEnvironment
复制了一些类型,例如IApplicationLifetime
和Microsoft.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")