【问题标题】:ConfigurationManager in a .NET Core application.NET Core 应用程序中的 ConfigurationManager
【发布时间】:2020-09-30 21:47:24
【问题描述】:

我在应用程序调试/启动时收到以下错误:

System.TypeInitializationException: 'System.Data.Entity.Internal.AppConfig' 的类型初始化程序引发了异常。'

FileNotFoundException:无法加载文件或程序集 'System.Configuration.ConfigurationManager,版本=4.0.2.0, 文化=中性,PublicKeyToken=cc7b13ffcd2ddd51'。系统无法 找到指定的文件。

下面这段代码使用DatabaeContext

private CamelotViewsStandardContext db = new CamelotViewsStandardContext();

该项目位于安装了System.Configuration.ConfigurationManager NuGet 包的 .NET Core 3.0 上。它适用于 .NET Core 2.2 上的先前版本,所以不知道为什么它不适用于 3.0?

用于创建数据库上下文的引用背后的代码是使用实体框架,应该在 3.0 中支持?

【问题讨论】:

  • 您使用的是哪个版本的 System.Configuration.ConfigurationManager NuGet 包?
  • 我的印象是整个配置故事已经完全用 .NET Core 重写 - 所以我相信您可能只是使用了“错误”的配置系统。查看 .NET Core 开箱即用的功能,并加以利用。
  • 我也有类似的问题。我今天更新到 3.1 Core,它开始失败。在 2.x 中很好

标签: c# configuration configurationmanager .net-core-3.0


【解决方案1】:

当我将项目从 .NET Core 2.2 升级到 3.1 时,这发生在我身上。单元测试会通过,但在部署 webapp 时会抛出异常。我通过添加解决了它

<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />
<PackageReference Include="System.Management" Version="4.7.0" />

到项目的.csproj 文件。

参考:https://github.com/dotnet/runtime/issues/627

【讨论】:

  • 升级到 3.1 后同样的问题。它在调试模式下工作,但在我发布时却不行。我已经在 .csproj System.IO.FileLoadException:无法加载文件或程序集“System.Configuration.ConfigurationManager,Version=4.0.3.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。找到的程序集的清单定义与程序集引用不匹配。 (0x80131040) 文件名:SmtpService.AlkenSmtpClient.Get_ALKEN_AM_SMTP() 处的“System.Configuration.ConfigurationManager,版本=4.0.3.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51”
  • 使用 System.Configuration.ConfigurationManager v5.0.0.0 时好像又坏了
【解决方案2】:

在两个项目中安装这个包

安装包 System.Configuration.ConfigurationManager -Version 4.7.0

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2018-10-19
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多