Fluent NHibernate 1.0RTM 引用Nhibernate版本问题

使用过FluentNhibernate的你不知道遇到过这个问题没有:

下面代码通过三种方式创建Nhibernate.ISessionFactory

前2种都是使用FluentNhibernate创建Nhibernate.ISessionFactory

1 使用配置文件创建

2 不使用配置文件,直接通过程序配置

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了一下,也有人说源码编译不能通过。

请大家给看看

posted @ 2010-04-10 13:00  readonly  阅读(1395)  评论(4编辑  收藏  举报