如何在.NET 4.0中使用Fluent NHibernate?

5

我想学习如何使用Fluent NHibernate,我正在使用VS2010 Beta2,编译针对.NET 4,但是我遇到了一些问题。

概述
目前我的主要问题是,尽管我已经导入了这个指南中提到的所有.dll程序集,但命名空间FluentNHibernate仍然无法使用。

我做过以下事情:
1. 我从这里下载了Fluent NHibernate的源代码,解压缩后在VS中打开了该解决方案。一个对话框问我是否要将该解决方案转换为VS2010解决方案,我选择了转换。
2. 然后我进入每个项目的属性并将它们全部配置为.NET 4进行编译,并构建了整个解决方案。
3. 我将FluentNHibernate中的所有.dll文件从/bin/Debug/复制到了本地硬盘上的一个新文件夹中。
4. 在我的示例项目中,我引用了新文件夹中的FluentNHibernate.dllNHibernate.dll

这是我的问题:
如果我在引用列表中右键单击FluentNHibernate并选择“在对象浏览器中查看...”,它会正确显示。

现在,当我尝试创建一个映射类时,我无法导入FluentNHibernate。以下代码:

using FluentNHibernate.Mapping;

namespace FluentNHExample.Mappings
{

}

使用语句时会出现错误,显示:

找不到类型或命名空间“FluentNHibernate”(是否缺少 using 指令或程序集引用?)。

FluentNHibernate 程序集仍然在我的项目的参考列表中,但如果我再次尝试在对象浏览器中浏览该程序集,则无法找到它。

是什么导致了这个问题?

4个回答

6
我也遇到了类似的问题。
“错误列表”窗口显示: 找不到类型或命名空间名称 'FluentNHibernate'(您是否缺少 using 指令或程序集引用?) 但是,“输出”窗口显示了详细信息: 警告 MSB3253:所引用的程序集 “FluentNHibernate” 无法解析,因为它依赖于“System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”,而此程序集不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中。请删除对未在目标框架中的程序集的引用,或考虑重新定位项目。 在我的情况下,我创建了一个默认针对“.Net Framework 4 Client Profile”的控制台应用程序项目,因此将其更改为“.Net Framework 4”就解决了问题。

0

是的 - 你会注意到你链接的另一个SO帖子也是我创建的。它们可能相关,因为它们都源于尝试在.NET 4上运行FNH,但具体问题是不同的。 - Tomas Aschan
我在想可能是因为智能感知反映了整数类型或其他什么东西,导致遇到了相同的错误。 - Chris Chilvers
你是对的 - 当我解决了另一个问题后,这个也起作用了。 - Tomas Aschan

0
我们遇到了这个问题,如果我们从引用NHibernate的项目中删除obj和bin文件夹,问题就会消失。
所以我们有一个使用NHibernate生成project1.dll的'project1'。 'project2'引用project1.dll。
如果我们从project2中删除obj/bin文件夹,问题就解决了。
不知道为什么,但我们的解决方案现在可以编译成功。
Mike。

0

难道没有更好的方法来解决这个问题吗?

我不想引用System.Data.OracleClient。所以如果我甚至不需要那个引用,我就不应该针对完整的.Net框架。

我能不能针对.Net框架的客户端配置文件,但在某个地方添加编译器警告异常,以便它跳过那个警告?我知道这不会导致运行时问题,因为我不使用Oracle。

我遇到了相同的问题,说还有一个依赖于System.Web。同样的故事,这是一个Windows WPF应用程序,所以我不需要System.Web。我能不能只针对客户端配置文件,并以某种方式说服编译器继续进行?

谢谢, Hugh

编辑:我解决了这个问题!虽然我必须自己编译NHibernate。在Visual Studio中打开2.1.2代码并删除所有包含“Oracle”或“System.Web”的内容,最终我成功构建了它。现在我不必针对完整的.Net Framework。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接