ASP.NET Core 3.1在单独的类库中获取wwwroot路径

时间:2019-12-18 22:52:56

标签: asp.net-core

以前,我可以使用DI访问IHostingEnvironment并将其传递到单独的类库中以获得wwwroot路径,但是在3.1版中,IHostingEnvironment被弃用,建议使用{{1} }。在我的生命中,我找不到要添加的NuGet包来访问该对象。我已经尝试IWebHostEnvironmentMicrosoft.AspNetCore.Hosting了,但是没有运气。任何人?如果使用此方法不再可能,有人可以提出解决方案,以便我可以将路径映射到我的应用程序的wwwroot文件夹吗?

3 个答案:

答案 0 :(得分:2)

通过戳打有关查看文档的链接是一个答案,但是由于链接可能会消失,因此这是解决方案。

从.NET Core 3.0开始,使用Microsoft.NET.Sdk.Web MSBuild SDK的项目隐式引用了共享框架。使用Microsoft.NET.Sdk或Microsoft.NET.Sdk.Razor SDK的项目必须引用ASP.NET Core才能在共享框架中使用ASP.NET Core API。

在您的项目文件中,添加此...

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

答案 1 :(得分:0)

来自文档。 此类型已过时,将在以后的版本中删除。推荐的替代方法是Microsoft.AspNetCore.Hosting.IWebHostEnvironment

答案 2 :(得分:0)

为了进一步解释John81的答案:Microsoft docs状态的相关部分:

要引用ASP.NET Core,请添加以下<FrameworkReference> 项目文件中的元素:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

仅对项目支持以这种方式引用ASP.NET Core 定位.NET Core 3.x。

请注意,TargetFrameworknetcoreapp3.0,这与上面的声明一致,即它仅适用于面向.NET Core 3.x的项目。大多数库项目都针对某个版本的 netstandard ,因此,除了添加<targetFramework>之外,您还需要更改<FrameworkReference>元素。