以前,我可以使用DI访问IHostingEnvironment
并将其传递到单独的类库中以获得wwwroot路径,但是在3.1版中,IHostingEnvironment
被弃用,建议使用{{1} }。在我的生命中,我找不到要添加的NuGet包来访问该对象。我已经尝试IWebHostEnvironment
和Microsoft.AspNetCore.Hosting
了,但是没有运气。任何人?如果使用此方法不再可能,有人可以提出解决方案,以便我可以将路径映射到我的应用程序的wwwroot文件夹吗?
答案 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。
请注意,TargetFramework
是netcoreapp3.0
,这与上面的声明一致,即它仅适用于面向.NET Core 3.x的项目。大多数库项目都针对某个版本的 netstandard ,因此,除了添加<targetFramework>
之外,您还需要更改<FrameworkReference>
元素。