我已将我的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;
}
答案 0 :(得分:12)
对于那些将再次面临问题的人。此异常是正常行为,因为它不是未处理的行为。您看到它的唯一原因是配置了visual studio,因此您可以看到所有异常(已处理和未处理)和“仅调试我的代码”被禁用。因此,您可以忽略该异常并在捕获时按下继续或配置visual studio,以便它不会向您显示此类异常。
答案 1 :(得分:4)
我也有一个例外,说“动态程序集中不支持调用的成员”。在我的案例中找到原因让我感到头疼。
@StuffHappens'回答中提到的原因也适用于我:我还在Debug-> Exceptions对话框中检查了“Common Language Runtime Exceptions”的“Thrown”框。但是,我还有未选中的工具 - >选项 - >调试 - >“启用我的代码(仅管理)”。事实上,当我这样做时,我并没有想到会出现这种例外情况。
除了上述例外,我还看到了
我再次选中了“启用我的代码(仅管理)”框,所有神秘异常都消失了!
我希望这可以帮助别人摆脱这个陷阱。
答案 2 :(得分:2)
我整个上午都花了同样的问题。
我尝试了所有的东西,但最终修复它的是删除我所有的bin文件夹。我实际上删除了我的项目,然后从存储库更新到最新版本(不应该检入bin文件夹),然后再次构建并运行项目。在某个地方,某种程度上,某些东西发生了变化,这意味着nHibernate无法找到log4net的汇编信息。我想它与目标目录中的一个不正确的配置有关,干净/重建无法解决!
答案 3 :(得分:0)
在加载用于dapper代码的sql文件时遇到了同样的错误,我将构建操作设置为“Embedded Resource”,.NET程序集能够加载它。