首页 > 解决方案 > 配置生成器 - 无法加载程序集 - .Net Framework

问题描述

我在我的 .Net Framework WebAPI 中使用基于文件的用户机密,并且所有内容都可以正常工作,AppSettings如下web.config所示

<configuration>
  <configSections>
    <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
  </configSections>
  <configBuilders>
    <builders>
      <add name="Secrets" userSecretsFile="MySecretsFile.xml" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=1.0.0.0, Culture=neutral" />
    </builders>
  </configBuilders>
  <appSettings  configBuilders="Secrets">
    <add key="mysetting1" value="(default)" />
    <add key="mysetting2" value="(default)" />
  </appSettings>
</configuration>

但是,我现在需要connectionStrings为 EF 连接添加相同的内容,以下条目在web.config下面

<connectionStrings configBuilders="Secrets">
  <add name="Entities" connectionString="A" providerName="System.Data.EntityClient" />
</connectionStrings>

当我运行应用程序(在 Visual Studio 中)时,我收到以下错误,表明在ConfigurationBuilders查找某些东西时遇到问题......但我不知道......事情是什么,所有的appSettingsconfigurationStrings正在按预期加载。

在此处输入图像描述

如果我删除configBuilders="Secrets",则错误不会显示。

那么我错过了什么,我怎样才能找出它试图加载但找不到的东西。

标签: c#.netweb-configasp-net-config-builders

解决方案


它确实说明了您遇到问题的程序集加载。您是否验证了您的项目实际上正确引用了Microsoft.Configuration.ConfigurationBuilders.UserSecrets?验证版本号,是不是1.0.0.0。通过直接在代码中引用该程序集中的类型最容易验证。如果编译器接受这一点,那么运行时也可能会接受。

如果明显的检查没有帮助,则解决通常的程序集加载故障排除。即fuslogvw.exe/The Assembly Binding Log Viewer

程序集绑定日志查看器显示程序集绑定的详细信息。此信息可帮助您诊断 .NET Framework 无法在运行时找到程序集的原因。这些故障通常是由于程序集部署到错误位置、本机映像不再有效或版本号或文化不匹配造成的。公共语言运行时未能找到程序集通常会在您的应用程序中显示为 TypeLoadException。

文档


推荐阅读