首页 > 解决方案 > 有人可以确认 .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-coreazure-functions

解决方案


基于 .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 文件中获取任何值。

在此处输入图像描述


推荐阅读