2009-12-17 4 views
5

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

Резюме
Моя главная проблема (на данный момент) является то, что пространство имен FluentNHibernate не доступна, даже если я импортировал все .dll узлы, упомянутые в this guide.

Это то, что я сделал:
1. Я скачал источник Fluent NHibernate из here, извлекали .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» не может быть найден (вы пропали без вести с помощью директивы или ссылка на сборку?).

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

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

ответ

0

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

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

+0

Да, вы заметите, что другое сообщение SO, с которым вы связаны, также было создано мной. Возможно, они связаны с тем, что они оба порождают попытку запустить FNH на .NET 4, но конкретные проблемы различны. –

+0

Я думал, что, возможно, это отражало типы для intellisense или что-то еще и сталкивается с той же ошибкой. –

+0

Вы были правы - когда я решил другую проблему, это сработало. –

6

У меня также была аналогичная проблема. Окно

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

Тип или пространство имен имя «FluentNHibernate» не может быть найден (вы пропали без вести с помощью директивы или ссылка на сборку?)

Но «Выход» окно показывало подробную информацию:

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

в моем случае,. я создал проект консольного приложения, которое таргетирования «.Net Framework 4 Client Profile» по умолчанию, так что изменения в «.Net Framework 4» исправлена ​​ошибка для меня

0

там не лучший способ, чтобы исправить эта проблема?

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

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

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

Спасибо, Хью

EDIT: Я понял это! Однако мне пришлось скомпилировать NHibernate. Открыл код 2.1.2 в Visual Studio и удалил все, что говорит «Oracle» или «System.Web», и я закончил его сборку. Теперь мне не нужно настраивать полную .Net Framework.

0

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

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

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

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

Mike.

Смежные вопросы