【问题标题】:EF Internal.AppConfig TypeInitializationExceptionEF Internal.AppConfig TypeInitializationException
【发布时间】:2013-11-07 13:16:28
【问题描述】:

我们正在构建一个从网络驱动器运行的 .NET 4 WPF 应用程序。该应用程序对我和我的大多数(开发人员)同行来说都很好。 最近,一位软件测试员加入了我们的开发团队,并被分到了和我一样的 AD 组中。

每当他启动应用程序时,就会弹出这个对话框:

之后应用自然会崩溃。

附加调试器时,调试器在 EF 4.4 的 DbContext 构造函数的第一行中断,代码如下:

public class CardioDanosContext : DbContext
{
    // ...
    public CardioDanosContext()
        : base("CardioDanos")
    {
        // Irrelevant first line

如您所见,我们使用在 app.config 中定义的连接字符串名称调用 DbContext 的构造函数,如下所示:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <!-- ... -->
  </configSections>

  <runtime>
    <loadFromRemoteSources enabled="true"/>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="External;Resources;Base;Services;Modules;Data;"/>
    </assemblyBinding>
  </runtime>

  <connectionStrings>
    <add name="CardioDanos"
         connectionString="Data Source={snip};Initial Catalog=CardioDanos;Integrated Security=True;"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

  <appSettings>
    <!-- ... -->
  </appSettings>

  <!-- ... -->

</configuration>

现在,我假设这是权限问题,但我们已经验证了受影响用户的所有权限,并且它们看起来都井然有序。他可以毫无问题地读取和修改 app.config 文件。我还假设它与从网络驱动器运行它有关,但话又说回来,它对我们中的一些人来说效果很好。

我在互联网上搜索时并没有真正找到任何关于此的信息,但有人知道为什么会发生这种情况吗?

【问题讨论】:

    标签: c# entity-framework .net-4.0 app-config


    【解决方案1】:

    Some googlingtells me有些程序集无法加载。您确定所有内容都正确安装在客户端上吗?您正在使用的任何第三方程序集安装在您的开发计算机上的 GAC 中,而客户端计算机上缺少这些程序集?

    您如何部署应用程序?您是在创建发布,还是只是复制 bin/debug 文件夹?如果是最后一个,那么如果您没有将 'Copy local' 设置为 True,则不包括任何特定的引用程序集。

    如何引用实体框架?您使用的是 NuGet 包,还是手动完成的旧安装?

    【讨论】:

    • 那些链接的错误似乎明确提到找不到程序集,而这个没有。我们没有使用任何需要安装的第 3 方程序集,它们都在构建后复制到一个名为“外部”的文件夹中,我们通过程序集绑定/探测对其进行扫描。 EF 作为 NuGet 包安装到解决方案中。应用程序通过我们的构建服务器将 bin/Release 文件夹复制到网络共享上。
    • 如果您检查解决方案资源管理器 -> 项目 -> 右键单击​​ -> 选择属性 -> 发布 -> 应用程序文件,那么您是否看到部署中没有的任何 DLL 文件?跨度>
    • 你能发布完整的 app.config 吗?或者至少是 EF 添加的部分?
    • 不,所有引用的 DLLS 似乎都在那里。 EF 并没有真正向我们的 app.config 添加任何内容,因为我们使用的是 POCO 并且必须手动添加连接字符串。不过,我会发布我们 app.config 的相关部分。
    • 异常屏幕截图的堆栈跟踪显示它正在尝试读取配置部分。
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多