【问题标题】:FluentNHibernate exception - Could not compile the mapping documentFluentNHibernate 异常 - 无法编译映射文档
【发布时间】:2014-11-12 17:27:26
【问题描述】:

在发布这个问题之前,我回顾了:

Runtime error when trying to run Fluent NHibernate tutorial example

Fluent nHibernate error - Could not compile the mapping document: (XmlDocument)

还有更多类似的问题,我希望这些问题能对我的问题有所启发。到目前为止没有运气:

我已经研究了一段时间的解决方案,并且在我最近的更改之前一切都很好。该解决方案仍然可以编译,但在启动时失败,出现以下异常:

未处理的类型异常 'FluentNHibernate.Cfg.FluentConfigurationException' 发生在 xx.Initialization.dll

在查看详细信息中它说:

创建 SessionFactory 时使用了无效或不完整的配置。查看PotentialReasons 集合和InnerException 以了解更多详细信息。”

潜在原因:计数 = 0

InnerException:无法编译映射文档:xx.Website.Persistence.Repository.Mappings.UI.yyDataDto.hbm.xml

内部异常:JIT 编译器遇到内部限制。

异常所指的 .hbm.xml 文件完好无损,没有对其进行任何更改。我的所有代码更改都包含在测试中,并且我所做的任何更改似乎都没有直接涉及异常。

为了解决这个问题,我提交并推送了我的所有更改(功能分支),并要求我的同事获取最新版本。他能够毫无例外地运行该解决方案。我尝试重新启动我的 VS2013、我的工作站、删除我的存储库并通过源代码控制以及通过我同事的解决方案文件夹(最新版本)的直接副本从头开始获取解决方案,但仍然收到相同的错误。

不知道还有什么可以尝试的。任何提示/建议将不胜感激。谢谢!

编辑/更新:

今天我尝试修复我的 VS2013 安装,但没有帮助。然后我更新到最新的 Service Pack 4。也没有结果。

我现在猜测我的调试器/设置可能有问题,因为如果我构建项目并启动它(不调试或导航到 Bin 文件夹并直接执行),它会毫无例外地运行。如果我调试,我会得到异常。

这是堆栈跟踪:

   at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
   at Company.Framework.Startup.Behaviour.NHibernateMultiDbBehaviour`2.ConfigureSessionFactory[TFluentMapping](String defaultSchema, String connectionStringKey)
   at Company.Framework.Startup.Behaviour.NHibernateMultiDbBehaviour`2.<>c__DisplayClassa`1.<RegisterNHibernate>b__5()
   at Castle.MicroKernel.Registration.ComponentRegistration`1.<>c__DisplayClassf`1.<UsingFactoryMethod>b__e(IKernel k, ComponentModel m, CreationContext c)
   at Castle.MicroKernel.ComponentActivator.FactoryMethodActivator`1.Instantiate(CreationContext context)
   at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)
   at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context)
   at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context)
   at Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(CreationContext context)
   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired)
   at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context, Boolean instanceRequired)
   at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service)
   at Castle.MicroKernel.DefaultKernel.Resolve(String key, Type service)
   at Castle.MicroKernel.DefaultKernel.Resolve[T](String key)
   at Company.Framework.Startup.Behaviour.NHibernateMultiDbBehaviour`2.<>c__DisplayClassa`1.<RegisterNHibernate>b__7(IKernel kernel)
   at Castle.MicroKernel.Registration.ComponentRegistration`1.<>c__DisplayClass12`1.<UsingFactoryMethod>b__11(IKernel k, ComponentModel m, CreationContext c)
   at Castle.MicroKernel.ComponentActivator.FactoryMethodActivator`1.Instantiate(CreationContext context)
   at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)
   at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context)
   at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context)
   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired)
   at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context, Boolean instanceRequired)
   at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service)
   at Castle.MicroKernel.DefaultKernel.Resolve(String key, Type service)
   at Castle.Windsor.WindsorContainer.Resolve[T](String key)
   at Company.Framework.Startup.Behaviour.NHibernateMultiDbBehaviour`2.RegisterNHibernate[TFluentMapping](String factoryName, String sessionName, String defaultSchema, String connectionStringKey)
   at Company.Framework.Startup.Behaviour.NHibernateMultiDbBehaviour`2.Start()
   at Company.Framework.Startup.Behaviour.BehaviourManager.AddAndInitialize[T](Action`1 initialize)
   at Company.Framework.Startup.Behaviour.BehaviourManager.Add[T](Action`1 initialize)
   at Company.Project.Initialization.ServiceInitializator.ConfigureBehaviours() in c:\Path\Project.Initialization\ServiceInitializator.cs:line 99

【问题讨论】:

  • 这不会是一个问题...如果你显示“无法编译”的完整堆栈(内部异常)。 NHiberante 最大的优点之一是全面且不言自明的堆栈跟踪......
  • 您好 Radim,感谢您的评论。我用堆栈跟踪和今天的故障排除尝试更新了我的问题。
  • 所以没有问题不在于“无法编译”。这不是例外。抱歉,您的设置没有经验(3d 派对库)
  • Radim,感谢您的帮助,非常感谢。

标签: c# nhibernate fluent-nhibernate nhibernate-mapping


【解决方案1】:

解决方案是完全卸载 VS2013,然后从头开始重新安装。在我这样做之后,异常就消失了。

我试图记住可能导致此问题的原因,到目前为止,我唯一的怀疑是,也许当我运行 CCleaner 时(在此问题出现之前),它删除了使 VS 以这种方式运行的文件或注册表项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多