.net-core - 有人可以确认 .NET Core 无法运行使用 System.Configuration.ConfigurationManager 的旧 .NET 类库吗
问题描述
我有一些使用 ConfigurationManager 访问 AppSettings 的旧 (.NET 4.6) 代码。我正在尝试在 Azure Function v3 中使用此类库,但失败并出现错误:
Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
在我花时间删除对 System.Configuration 的依赖之前,最好确认(记录)这个特定场景不受支持——我在任何地方都找不到它。
我是否缺少互操作的简单内容或不受支持?
解决方案
基于 .Net 核心的 Azure Function 版本 2 及更高版本,如果它们不兼容,则无法使用现有的 .net Framework (4.6) 库。
当您将使用现有的 .Net 框架类库时,您必须将所有配置放在 .Json 文件中。函数中没有 AppSetting 的概念。如果您只有 ConfigurationManager 类问题,您可以进行以下更改
.Net 框架 4.6
public string DatabaseId
{
get
{
return ConfigurationManager.AppSettings["DatabaseId"];
}
}
**.Net Core 3.1 **
public string DatabaseId
{
get
{
return Environment.GetEnvironmentVariable("DatabaseId");
}
}
如果不想修改现有代码,可以将 Azure Function v1 与 ConfigurationManager 结合使用。
更新的答案
ConfigurationManager 回来了,你可以看到这个链接但是我没有找到任何文档,如何使用新的配置管理器。新的ConfigurationManager与 .netstandard 2.0 兼容。
我的源代码我假设它会从 XML/JSON 文件中读取应用程序设置,但不确定我们如何在 .netstandard 中使用它。
我已经System.Configuration.ConfigurationManager
在我的示例应用程序(控制台、Web 和函数)中安装了 Nuget,但没有从 JSON 文件中获取任何值。
推荐阅读
- python - 我可以只在 Python 包装函数中传递关键字参数的关键字名称吗?
- android - android如何显示UI?
- java - 启动 Java 应用程序时如何在 .sh 文件中重新定义属性值
- python - 不能将 namedtuple 与 concurrent.futures 一起使用?
- python - 如何解压缩相同子目录但不同文件夹中的文件
- c++ - 使用背景减法去除阴影以进行静止物体检测
- c# - C#确定满足哪个条件
- github - Github Actions 恢复的缓存没有被使用
- xml - 如何省略外部 XML 元素的名称
- google-cloud-functions - 从 Cloud Function 本身获取 Cloud Function 名称