2010-03-10 25 views
8

Tôi đang sử dụng 1.0 RTM của Nhibernate thông thạo, với 3.0 build NHibernate. Để làm điều này, tôi cần phải thêm dòng sau vào tập tin .config tôi:Làm cách nào để NUnit tôn trọng bindingRedirect của tôi trong testassembly.dll.config của tôi?

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

này hoạt động tuyệt vời khi chạy thử nghiệm tích hợp với các plugin TestDriven.net, nhưng thất bại trong gui NUnit hoặc Á hậu điều khiển với lỗi sau:

System.IO.FileLoadException: Không thể tải tệp hoặc lắp ráp 'NHibernate, Version = 2.1.0.4000, Culture = neutral, PublicKeyToken = aa95f207798dfdb4' hoặc một trong các phụ thuộc của nó. Định nghĩa tệp kê khai của assembly được đặt không khớp với tham chiếu assembly. (Ngoại lệ từ HRESULT: 0x80131040)

Làm cách nào để NUnit tôn trọng bindingRedirect của tôi và chạy thử nghiệm tích hợp của tôi thành công?

Trả lời

3

Điều quan trọng là đặt nó vào đúng tệp .config. Xem Does redirecting assembly binding work for unit testing with a test runner?.

Một cách tiếp cận khác sẽ được biên dịch thành thạo-nhibernate dựa trên NHibernate 3.0. Nếu nó có lỗi biên dịch, hãy hỏi nhóm dev và/hoặc nĩa nguồn và làm cho nó biên dịch.

+2

Vì vậy, tệp .config chính xác là gì? –

+0

@FrancoisBotha theo liên kết –

+3

Điều đó không thực sự theo tinh thần của StackOverflow. http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

11

Tôi đã gặp sự cố tương tự khi chạy nunit trên Máy chủ CI (tre, cụ thể). Cách tôi hiểu nó là nếu nunit đang chạy trong không gian quá trình riêng của nó (như bạn chỉ cần chạy nó từ dòng lệnh), thì nó có thể đọc chính xác các chuyển hướng ràng buộc lắp ráp .dll.config. Tuy nhiên, nếu máy chủ CI của bạn đang chạy nunit trong không gian quy trình của CI Server, thì nó sẽ cố gắng lấy cấu hình từ tiến trình cha. Để đảm bảo rằng nunit được chạy trong không gian quy trình của riêng nó, hãy thêm tùy chọn dòng lệnh /process:multiple. Ít nhất, đó là những gì làm việc cho tôi để nunit đúng cách sẽ tìm thấy các ràng buộc chuyển hướng.

TL; DR: sử dụng tùy chọn dòng lệnh /process:multiple

+0

NB: Nó cũng hoạt động với/process: Tách biệt –

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