Fluent NHibernate 1.0RTM 引用Nhibernate版本问题
使用过FluentNhibernate的你不知道遇到过这个问题没有:
下面代码通过三种方式创建Nhibernate.ISessionFactory
前2种都是使用FluentNhibernate创建Nhibernate.ISessionFactory
1 使用配置文件创建
2 不使用配置文件,直接通过程序配置
3
static SessionFactory()
{
sessionFactory = FluentNHibernate.Cfg.Fluently.Configure(
new NHibernate.Cfg.Configuration()
.Configure())
.Mappings(o => o.FluentMappings.AddFromAssembly(typeof(Teemdo.Core.Entity.MsApplicationMap).Assembly).ExportTo("E:\\project\\tmp"))
.BuildSessionFactory();
//sessionFactory = FluentNHibernate.Cfg.Fluently.Configure()
// .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2005
// .ConnectionString(s => s.Server(".")
// .Database("aspnet_membership")
// .Username("sa")
// .Password("sa")
// ))
// .Mappings(o => o.FluentMappings
// .AddFromAssembly(typeof(Teemdo.Core.Entity.MsApplicationMap).Assembly)
// .ExportTo("E:\\project\\tmp"))
// .BuildSessionFactory();
//------------------------------------------------------------------------------
//if (HttpContext.Current.Request.ApplicationPath != " / ")
//{
// sessionFactory = new NHibernate.Cfg.Configuration().Configure(HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath) + "/hibernate.cfg.xml").BuildSessionFactory();
//}
//else
//{
// sessionFactory = new NHibernate.Cfg.Configuration().Configure(HttpContext.Current.Server.MapPath("/") + "/hibernate.cfg.xml").BuildSessionFactory();
//}
}
使用第二种方法(已经注释部分)测试通过,
但是改成第一种方式(未注释部分)创建时出现错误:
“未能加载文件或程序集“NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一个依赖项。
找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)”
说明:项目使用的Nhibernate.dll的是从Fluent NHibernate官方网站下载的“fluentnhibernate-1.0RTM.zip”中包含的Nhibernate.dll,版本为2.1.0.4000(目前最新版本是:2.1.2.4000)
如下图
看起来是个简单问题,我就把项目中Nhibernate.dll换成2.1.2.4000版本的,结果
“未能加载文件或程序集“NHibernate, Version=2.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一个依赖项。
找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)”
郁闷了,
准备从FluentNhibernate官方网站上把FluentNhibernate的源码下载下来把Nhibernate换成最新版本后编译后使用
打开源码一看
源代码里本来使用的就是2.1.2.4000的,为啥提供的下载里Nhibernate.dllb版本是2.1.0.4000的,算了还是自个编译一遍吧,
再次让我郁闷了,缺少一个文件,编译无法通过.
google了一下,也有人说源码编译不能通过。
请大家给看看