2009-12-17 31 views
5

Tôi muốn học cách sử dụng Fluent NHibernate, và tôi đang làm việc trong VS2010 Beta2, biên dịch với .NET 4, nhưng tôi đang gặp một số vấn đề.Làm cách nào để sử dụng Fluent NHibernate với .NET 4.0?

Tóm tắt
Vấn đề chính của tôi (tại thời điểm này) là không gian tên FluentNHibernate không có sẵn mặc dù tôi đã nhập khẩu tất cả các hội đồng .dll nêu tại this guide.

Đây là những gì tôi đã thực hiện:
1. Tôi tải về các nguồn thạo NHibernate từ here, chiết xuất các .zip và mở giải pháp trong VS. Một hộp thoại hỏi tôi có muốn chuyển đổi giải pháp thành giải pháp VS2010 hay không, vì vậy tôi đã làm.
2. Sau đó tôi đã đi vào các thuộc tính của từng dự án và cấu hình tất cả chúng để biên dịch .NET 4 và xây dựng toàn bộ giải pháp.
3. Tôi đã sao chép tất cả các tệp .dll từ /bin/Debug/ trong FluentNHibernate vào một thư mục mới trên ổ cứng cục bộ của tôi.
4. Trong dự án ví dụ của tôi, tôi đã tham chiếu FluentNHibernate.dllNHibernate.dll từ thư mục mới.

Đây là vấn đề của tôi:
Nếu tôi nhấp chuột phải vào FluentNHibernate trong danh sách tài liệu tham khảo và chọn "View trong Object Browser ...", nó xuất hiện một cách chính xác.

Bây giờ, khi tôi cố tạo lớp ánh xạ, tôi không thể nhập FluentNHibernate. Mã này:

using FluentNHibernate.Mapping; 

namespace FluentNHExample.Mappings 
{ 

} 

tạo ra một lỗi trên báo cáo kết quả sử dụng, nói

Loại hoặc không gian tên 'FluentNHibernate' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?).

Lắp ráp FluentNHibernate vẫn còn trong danh sách Tham chiếu dự án của tôi, nhưng nếu tôi cố gắng duyệt lại cụm trong Trình duyệt đối tượng lần nữa, không thể tìm thấy nó.

Điều gì gây ra điều này?

Trả lời

0

Tôi không thể quan sát hành vi này trong xây dựng của tôi, nó có thể liên quan đến vấn đề này: Weird override problem with Fluent NHibernate and .NET 4

Nếu vậy bạn có thể thử http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/ae4013d711d2e4ad như một sửa chữa tiềm năng.

+0

Vâng - bạn sẽ nhận thấy rằng bài đăng SO khác mà bạn đã liên kết cũng được tạo bởi tôi. Họ có thể có liên quan ở chỗ cả hai đều sinh ra từ cố gắng chạy FNH trên .NET 4, nhưng các vấn đề cụ thể là khác biệt. –

+0

Tôi đã suy nghĩ có lẽ nó đã được phản ánh qua các loại cho intelliSense hoặc một cái gì đó và chạy vào cùng một lỗi. –

+0

Bạn đã đúng - khi tôi đã giải quyết vấn đề khác, điều này cũng làm việc tốt. –

6

Tôi cũng gặp sự cố tương tự.

cửa sổ "Danh sách Lỗi" hiển thị:

Loại hoặc namespace tên 'FluentNHibernate' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?)

Nhưng "Output" cửa sổ đang hiển thị thông tin chi tiết:

cảnh báo MSB3253: Cụm tham chiếu "FluentNHibernate" không thể được giải quyết vì nó có phụ thuộc vào "System.Data.OracleClient, Version = 4.0.0.0, Văn hóa = trung lập, PublicKeyToken = b77a5c561934e089 "không nằm trong khung được nhắm mục tiêu hiện tại" .NETFramework, Phiên bản = v4.0, Hồ sơ = Khách hàng ". Vui lòng xóa tham chiếu đến các hội đồng không nằm trong khung được nhắm mục tiêu hoặc xem xét nhắm mục tiêu lại dự án của bạn

Trong trường hợp của tôi;. tôi đã tạo ra một dự án giao diện điều khiển ứng dụng được nhắm mục tiêu ".Net Framework 4 Client Profile" theo mặc định, vì vậy thay đổi để ".Net Framework 4" vấn đề cố định cho tôi

0

không có phải là một cách tốt hơn để sửa chữa vấn đề này?

Tôi không muốn tham chiếu System.Data.OracleClient. Vì vậy, tôi không cần phải nhắm mục tiêu khung .Net đầy đủ nếu tôi thậm chí không muốn tham chiếu đó.

Tôi không thể nhắm mục tiêu Hồ sơ khách hàng của khung .Net, nhưng thêm ngoại lệ cảnh báo trình biên dịch ở đâu đó để nó chỉ bỏ qua cảnh báo đó? Tôi biết nó sẽ không gây ra một vấn đề thời gian chạy vì tôi không sử dụng Oracle.

Tôi nhận được sự cố giống hệt nhau cho biết cũng có sự phụ thuộc vào System.Web. Cùng một câu chuyện, đây là một ứng dụng Windows WPF, vì vậy tôi không cần System.Web. Tôi không thể chỉ nhắm mục tiêu Hồ sơ Khách hàng và bằng cách nào đó thuyết phục trình biên dịch tiếp tục?

Cảm ơn, Hugh

EDIT: Tôi figured này ra! Tôi đã phải biên dịch NHibernate bản thân mình mặc dù. Đã mở mã 2.1.2 trong Visual Studio và xóa tất cả mọi thứ có nội dung "Oracle" hoặc "System.Web" và tôi đã nhận được nó để xây dựng. Tôi không phải nhắm mục tiêu đầy đủ .Net Framework bây giờ.

0

Chúng tôi đã gặp sự cố này và sự cố đã biến mất nếu chúng tôi xóa thư mục obj và bin khỏi dự án đang tham chiếu dự án sử dụng NHibernate.

Vì vậy, chúng tôi có 'project1' sử dụng NHibernate để tạo project1.dll. 'project2' references project1.dll.

Sự cố được giải quyết nếu chúng tôi đã xóa thư mục obj/bin khỏi dự án2.

Không thể nói tại sao, nhưng giải pháp của chúng tôi hiện đang biên dịch tốt.

Mike.

Các vấn đề liên quan