2017-06-13 19 views
5

Tôi có một ứng dụng khá phức tạp, với một dự án đơn vị kiểm tra nhắm mục tiêu .NET Framework 4.6.1cập nhật NuGet đặt bindingRedirects cho system.runtime mà sau đó thất bại trong thời gian chạy

Nếu tôi chạy sau trong Package Management console:

update-package -reinstall -project velogicfit.Sizer3D.Core.UnitTests

... sau đó NuGet bổ sung thêm một loạt các ràng buộc chuyển hướng file app.config kiểm tra dự án của đơn vị, chuyển hướng đến v4.1.1.0 của những thứ như System.Runtime:

<dependentAssembly> 
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> 
</dependentAssembly> 

Và sau đó, khi dự án được điều hành (bởi NCrunch), nó không thành công với thông điệp:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 

tôi có thể có thể sửa lỗi bằng cách cài đặt một phiên bản khuôn khổ gần đây hơn, nhưng tôi thà hiểu những gì là khiến Nuget thêm các chuyển hướng ràng buộc này.

Nhìn qua mỗi DLL trong thư mục đầu ra các thử nghiệm dự án của đơn vị, tham chiếu cao nhất tôi có thể thấy là system.runtime v4.0.20.0

Tôi đã thử asmspy và nó cũng báo cáo rằng có một số phụ thuộc vào 4.0.20.0, nhưng không có gì trên 4.1.1.0

FWIW, các tham chiếu đến system.runtime v4.0.20.0 tất cả đến từ các dự án khác của tôi trong dung dịch, mà đang nhắm mục tiêu NETStandard 1,4

Câu hỏi:

  • Làm cách nào để tìm hiểu phiên bản khung nào tương ứng với từng phiên bản system.runtime này (4.0.0.0, 4.0.20.0, 4.1.1.0)?
  • Có bất kỳ nhật ký nào tôi có thể bật để tìm hiểu Nuget đang nghĩ gì về & lý do tại sao nó đặt ràng buộc lắp ráp chuyển hướng sang 4.1.1.0?
  • Các dự án NETStandard 1.4 của tôi có nên tham chiếu 4.0.20.0 không?
+0

Phiên bản của gói 'System.Runtime' nào được sử dụng? (được liệt kê trong 'packages.config') phiên bản" công khai "mới nhất nên là '4.1.0.0' hoặc' 4.0.20.0' tùy thuộc vào phiên bản của gói NuGet, nhưng afaik không bao giờ' 4.1.1.0' –

+0

packages.config hiển thị : '' – dbruning

Trả lời

1

Tôi đã giải quyết vấn đề này (và một số vấn đề tham chiếu khác) bằng cách chuyển sang Paket. Paket đã giúp tôi nắm bắt các phụ thuộc trực tiếp và chuyển tiếp của tôi, và sau đó tôi có thể thấy điều gì đã tùy thuộc vào điều gì và thiết lập chuyển hướng ràng buộc một cách thích hợp.

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