Fluent NHibernate 1.2 - 动态程序集不支持调用的成员

时间:2011-02-15 13:32:26

标签: nhibernate fluent-nhibernate

我已将我的Fluent NHibenate升级到1.2,因为我已将NHibenate升级到3.0版。这反过来是因为我在我的项目中使用ANTLR并且在ANTLR版本之间存在兼容性问题。我现在得到这个错误创建映射作为Fluently.Configure()调用的一部分,我以前没有使用相同的程序集与1.0.X.X版本。我在VS2008中使用C#.NET 3.5进行开发。

错误是“动态程序集中不支持调用的成员。”

    public static ISessionFactory GetFactory()
    {
        if (_factory == null)
        {
            Assembly assembly = Assembly.Load("BigFoot.Infrastructure");

            IApplicationContext springContainer = ContextRegistry.GetContext();
            IDbProvider provider = (IDbProvider)springContainer.GetObject("DbProvider");

            string connection = provider.ConnectionString;

            if (connection.Length > 0)
            {

                _factory = Fluently.Configure()
                    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(connection))
                    .Mappings(m =>
                        {
                            m.FluentMappings.AddFromAssembly(assembly);
                            m.HbmMappings.AddFromAssembly(assembly);
                        })

                    .BuildSessionFactory();
            }
        }

        return _factory;
    }

4 个答案:

答案 0 :(得分:12)

对于那些将再次面临问题的人。此异常是正常行为,因为它不是未处理的行为。您看到它的唯一原因是配置了visual studio,因此您可以看到所有异常(已处理和未处理)和“仅调试我的代码”被禁用。因此,您可以忽略该异常并在捕获时按下继续或配置visual studio,以便它不会向您显示此类异常。

答案 1 :(得分:4)

我也有一个例外,说“动态程序集中不支持调用的成员”。在我的案例中找到原因让我感到头疼。

@StuffHappens'回答中提到的原因也适用于我:我还在Debug-> Exceptions对话框中检查了“Common Language Runtime Exceptions”的“Thrown”框。但是,我还有未选中的工具 - >选项 - >调试 - >“启用我的代码(仅管理)”。事实上,当我这样做时,我并没有想到会出现这种例外情况。

除了上述例外,我还看到了

  • 来自DevExpress的MissingManifestResourceException抱怨某些SkinInfoBlob.resources元素不存在于包含自定义外观的DLL中
  • 不同的FileNotFoundExceptions抱怨假定缺少* .XmlSerializers程序集与程序集版本相同,其中所需的类型所在(不仅适用于我们自己的程序集,还适用于NHibernate.XmlSerializers)
  • 来自Spring.Net的NotSupportedException尝试从NHibernate解析一些对象,声明“动态程序集中不支持被调用的成员”。 (或“Der aufgerufene会员wird in einer dynamischen Assemblynichtunterstützt。”in German)
  • 处理TatukGIS符号时的FormatException(或德语中的“Die Eingabezeichenfolge hat das falsche Format。”)

我再次选中了“启用我的代码(仅管理)”框,所有神秘异常都消失了!

我希望这可以帮助别人摆脱这个陷阱。

答案 2 :(得分:2)

我整个上午都花了同样的问题。

我尝试了所有的东西,但最终修复它的是删除我所有的bin文件夹。我实际上删除了我的项目,然后从存储库更新到最新版本(不应该检入bin文件夹),然后再次构建并运行项目。在某个地方,某种程度上,某些东西发生了变化,这意味着nHibernate无法找到log4net的汇编信息。我想它与目标目录中的一个不正确的配置有关,干净/重建无法解决!

答案 3 :(得分:0)

在加载用于dapper代码的sql文件时遇到了同样的错误,我将构建操作设置为“Embedded Resource”,.NET程序集能够加载它。