【问题标题】:ASP.NET Core 3.1 Get wwwroot Path In Separate Class LibraryASP.NET Core 3.1 在单独的类库中获取 wwwroot 路径
【发布时间】:2020-05-26 12:10:06
【问题描述】:

以前,我可以使用 DI 访问 IHostingEnvironment 并将其传递到我的单独类库中以获取 wwwroot 路径,但在 3.1 中,IHostingEnvironment 已被弃用,建议使用 IWebHostEnvironment。在我的一生中,我找不到要添加的 NuGet 包来访问该对象。我试过Microsoft.AspNetCore.HostingMicrosoft.AspNetCore.Hosting.Abstractions 没有运气。任何人?如果不再可能使用这种方法,有人可以提出一个解决方案,以便我可以为我的应用程序映射到 wwwroot 文件夹的路径吗?

【问题讨论】:

标签: asp.net-core


【解决方案1】:

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

从 .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>

【讨论】:

    【解决方案2】:

    稍微扩展一下 John81 的回答:Microsoft docs 状态的相关部分:

    要引用 ASP.NET Core,请添加以下 &lt;FrameworkReference&gt; 项目文件中的元素:

    <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,因此除了添加 &lt;FrameworkReference&gt; 之外,您还需要更改 &lt;targetFramework&gt; 元素。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 2021-01-29
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多