2011-04-16 37 views
32

Tôi mới dùng NHibernate và đã cố gắng để bắt kịp và chạy với nó, Fluent NHibernate và NHProf sử dụng NuGet. Sau khi đọc bài viết này (http://gurustop.net/blog/2011/03/13/nhibernate-3-1-0-on-nuget-important-details) có vẻ như v3.1 không được cài đặt trực tiếp, tuy nhiên, không xuất hiện cảnh báo nào cho v3.2.Cài đặt NHibernate 3.2 với NuGet

Sau khi cài đặt thành công NHibernate 3.2 và NHProf bằng NuGet, tôi không thể cài đặt Fluent NHibernate vì nó nói rằng "Đã tham chiếu phiên bản mới hơn của NHibernate".

Ngoài ra, khi tôi chạy ứng dụng của mình, tôi nhận được lỗi sau "Không thể tải tệp hoặc lắp ráp 'NHibernate.ByteCode.Castle' hoặc một trong các phụ thuộc của nó". Liên kết sau (Could not load file or assembly in NHibernate) đề nghị cài đặt một số hội đồng bổ sung, đó là những gì tôi đã hy vọng để tránh bằng cách sử dụng NuGet ở nơi đầu tiên.

Tại thời điểm này sẽ dễ dàng hơn khi làm theo các bước trên NHForge để có được mọi thứ và chạy khi các gói trên NuGet dường như không tương thích?

Trả lời

29

NHibernate 3.2 đi kèm với máy proxy của riêng mình. Nếu bạn đang sử dụng tệp cấu hình, bạn chỉ cần xóa thuộc tính cấu hình proxyfactory.

Tôi tin rằng phiên bản của Fluent NHibernate mà bạn đang sử dụng mặc định để sử dụng NHibernate.ByteCode.Castle. Trong trường hợp đó, bạn cần phải ghi đè cài đặt đó bằng nhà máy được xây dựng trong NHibernate 3.2 proxy:

.ProxyFactoryFactory("NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate") 
+2

Điều này đã sửa nó cho tôi (hay đúng hơn là, loại bỏ khi tôi đang sử dụng tệp cấu hình XML). 'NHibernate.Gói tích hợp Castle 'trong Nuget chỉ lên đến 3.1.0.4000 vào lúc này (khi tôi viết bình luận này), họ cần phải cập nhật nó lên phiên bản mới nhất của NHibernate. Hy vọng rằng không có sự khác biệt đáng kể giữa nhà máy proxy của NHibernate và lâu đài? –

+0

Cảm ơn bạn! – CrazyCoderz

+1

@JamesWebster +1 để xóa '' khỏi cấu hình XML. –

11

Mỗi phiên bản của thành thạo NHibernate sử dụng một phiên bản chính xác của NHibernate (bao gồm trong gói thành thạo NHibernate) Bạn nên loại bỏ các gói NHibernate và thêm chỉ thành thạo NHibernate

+0

Điều này là đúng ... không biết tại sao một người nào đó bỏ phiếu bình chọn không có nhận xét. – Charlino

+0

Gói Nhibernate Fluent cài đặt NH 3.1. Câu hỏi đặt ra là 3.2. – mxmissile

+1

"Tôi mới làm quen với NHibernate và đã cố gắng để bắt đầu và chạy với nó" vì vậy tôi nghĩ câu trả lời này là hợp lệ - Tôi đang sử dụng 3.1 bản thân vì những vấn đề này, cuối cùng khi tất cả các gói bắt kịp chúng tôi sẽ được trên 3.2 – Adam

0

NHibernate 3.2 đi kèm với cấu hình ánh xạ của riêng nó (Conform). FluentNHibernate chỉ hoạt động với NHibernate 3.1 là kết quả của việc này, bạn không thể sử dụng 3.2 (tôi đã có cùng một vấn đề). Vì vậy, bạn sẽ phải tự tải xuống 3.1 và tham khảo trừ khi NuGet cho phép bạn sử dụng 3.1 trực tiếp.

Tùy chọn khác của bạn là xóa tất cả các tham chiếu đến 3.2 và sau đó cài đặt FluentNHibernate từ NuGet, sau đó trình phân giải phụ thuộc sẽ khởi động và tự động bao gồm NHibernate 3.1 cho bạn.

3

Tôi đang sử dụng consctruction này trong tập tin cấu hình để làm cho công việc FluentNhibernate với NHibernate 3,2

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.2.0.1001" newVersion="3.2.0.1001" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
+0

Cuộc gọi tốt. Tôi cần điều này để có được FluentNHibernate 1.3.0.727 để chơi với NHibernate 3.3.1.4000. –

6

Nếu bạn sử dụng Console NuGet Package Manager thay vì GUI để có được gói (Install-Package FluentNHibernate) bạn sẽ nhận được phiên bản 1.3.0.717 tương thích với NHibernate 3.2 enter image description here

Tôi đã thử và đang hoạt động tốt cho tôi. Tôi đã trả lời câu hỏi này đã có trên liên kết này: which version of fluent nhibernate is compatible with nhibernate 3.2

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