Как использовать Fluent NHibernate с .NET 4.0? - PullRequest
5 голосов
/ 17 декабря 2009

Я хочу научиться использовать Fluent NHibernate, и я работаю в VS2010 Beta2, компилируя против .NET 4, но у меня возникают некоторые проблемы.

Основная информация
Моя основная проблема (на данный момент) заключается в том, что пространство имен FluentNHibernate недоступно, хотя я импортировал все сборки .dll, упомянутые в этого руководства .

Вот что я сделал:
1. Я скачал источник Fluent NHibernate с здесь , распаковал .zip и открыл решение в VS. Диалог спросил меня, хочу ли я преобразовать решение в решение VS2010, поэтому я и сделал.
2. Затем я вошел в свойства каждого проекта и настроил их все для компиляции для .NET 4 и построил полное решение.
3. Я скопировал все файлы .dll из /bin/Debug/ в FluentNHibernate в новую папку на локальном жестком диске.
4. В моем примере проекта я ссылался на FluentNHibernate.dll и NHibernate.dll из новой папки.

Это моя проблема:
Если я щелкну правой кнопкой мыши на FluentNHibernate в списке литературы и выберу «Просмотр в браузере объектов ...», он отобразится правильно.

Теперь, когда я пытаюсь создать класс отображения, я не могу импортировать FluentNHibernate. Этот код:

using FluentNHibernate.Mapping;

namespace FluentNHExample.Mappings
{

}

генерирует ошибку в операторе использования, говоря:

Не удалось найти тип или пространство имен 'FluentNHibernate' (отсутствует директива using или ссылка на сборку?).

Сборка FluentNHibernate все еще находится в списке ссылок моего проекта, но если я попытаюсь снова просмотреть сборку в Обозревателе объектов, она не может быть найдена.

Что вызывает это?

Ответы [ 4 ]

6 голосов
/ 29 апреля 2010

У меня тоже была похожая проблема.

Отображается окно «Список ошибок»:

Не удалось найти имя типа или пространства имен 'FluentNHibernate' (отсутствует директива using или ссылка на сборку?)

Но в окне «Вывод» отображалась подробная информация:

предупреждение MSB3253: не удалось разрешить указанную сборку «FluentNHibernate», поскольку она зависит от «System.Data.OracleClient, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089», которая не находится в текущая целевая структура ".NETFramework, версия = v4.0, профиль = клиент". Удалите ссылки на сборки, не входящие в целевую среду, или рассмотрите возможность перенастройки вашего проекта.

В моем случае; Я создал проект консольного приложения, который по умолчанию был нацелен на «.Net Framework 4 Client Profile», поэтому я изменил на «.Net Framework 4» исправленную для меня проблему.

0 голосов
/ 11 января 2011

У нас была эта проблема, и проблема исчезла, если мы удалили папку obj и bin из проекта, который ссылался на NHibernate с помощью проекта.

Итак, у нас есть 'project1', который использует NHibernate для создания project1.dll. 'project2' ссылается на project1.dll.

Проблема решена, если мы удалили папку obj / bin из проекта 2.

Не могу сказать почему, но наше решение теперь отлично компилируется.

Mike.

0 голосов
/ 07 июля 2010

Нет лучшего способа решить эту проблему?

Я не хочу ссылаться на System.Data.OracleClient. Так что я не должен был бы ориентироваться на всю платформу .Net, если я даже не хочу эту ссылку.

Не могу ли я указать целевой профиль клиента .Net framework, но добавить где-нибудь исключение предупреждения компилятора, чтобы оно просто пропускало это предупреждение? Я знаю, что это не вызовет проблем во время выполнения, потому что я не использую Oracle.

У меня такая же проблема, которая говорит, что есть также зависимость от System.Web. Та же история, это для приложения Windows WPF, поэтому мне не нужен System.Web. Разве я не могу просто настроить таргетинг на профиль клиента и каким-то образом убедить компилятор продолжать работу?

Спасибо, Хью

РЕДАКТИРОВАТЬ: Я понял это! Я должен был скомпилировать NHibernate сам, хотя. Открыл код 2.1.2 в Visual Studio и удалил все, что говорит «Oracle» или «System.Web», и я закончил тем, что получил его для сборки. Мне не нужно нацеливаться на полную версию .Net Framework.

0 голосов
/ 20 декабря 2009

Я не могу наблюдать это поведение в моей сборке, может ли это быть связано с этой проблемой: Странная проблема переопределения с Fluent NHibernate и .NET 4

Если это так, вы можете попробовать http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/ae4013d711d2e4ad в качестве потенциального исправления.

...