【发布时间】:2021-12-30 09:22:22
【问题描述】:
我有一个 .NET 标准版本的库。此库将用于 .NET 应用程序和 .NET Core 应用程序。我想为库中的 .NET Core 应用程序使用 IConfiguration,但 .NET 应用程序会引发异常。
我需要检查版本或确定应用程序是 .NET Core 还是 .NET framework?我尝试获取 appsettings.json 文件来确定应用程序类型,但 .NET 和 .NET Core 应用程序的根路径不同。
当我尝试获取应用程序的框架版本时,它给了我库的版本。
如何区分它是哪种类型的应用程序?我怎样才能做到这一点?
【问题讨论】:
-
.NET 5 和 6 是 .NET Core 5 和 6。您可能指的是 .NET Framework 吗?您还可以通过安装 NuGet 包在 .NET Framework 应用程序中使用 .NET 的配置、日志记录和依赖注入
-
无论如何,运行时版本根本帮不了你。如果未设置配置,您的库将从哪里加载其配置设置?
appsettings.json不是某种特殊文件。它只是一个由配置中间件加载的 JSON 文件。您可以在多个位置以不同的格式指定许多其他文件。甚至从数据库加载设置。您也可以轻松删除该文件。如果没有配置中间件,appsettings.json文件根本不会被加载 -
您能否发布一些在 .NETFramework 中使用但在 .NET Core 中可以正常使用的示例代码?我认为您遇到了XY problem。
-
图书馆没有这种方式的业务访问配置,这是应用程序的工作。让它为你提供你需要的配置,作为强类型数据;应用程序如何获得它是应用程序的问题。虽然您可以使用
IConfiguration来获取传入的数据,但这是一个非常具体且非常薄弱的抽象,无法明确您的类需要什么样的配置。
标签: c# .net asp.net-core .net-standard appsettings