2017-07-27 22 views
16

Tôi đang nâng cấp một giải pháp hiện có từ .NET 4.6.2 lên .NET 4.7. Giải pháp này phụ thuộc vào một số gói nuget nhắm mục tiêu .NET 4.6.2 và do đó phụ thuộc vào gói nuget System.ValueTuple."Loại được xác định trước System.ValueTuple không được xác định hoặc được nhập" sau khi nâng cấp lên .NET 4.7

Nhưng sau khi nâng cấp, tôi nhận được một bó toàn bộ những xây dựng lỗi:

Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported

tôi không thể loại bỏ các gói System.ValueTuple, như đề xuất trong các ý kiến ​​here, bởi vì các gói khác phụ thuộc vào nó. (Và nếu tôi ép buộc, chúng dường như sẽ nổ tung.)

Bất kỳ đề xuất nào?

Cập nhật 8/8/17

Tôi đã tìm ra rằng tôi có thể loại bỏ các gói System.ValueTuple, và tôi có thể có được giải pháp để biên dịch như vậy. Tuy nhiên, tôi đã có một tá gói NuGet trong giải pháp xuất hiện để nhắm mục tiêu .NET 4.6.2, và do đó yêu cầu System.ValueTuple làm phụ thuộc. Tôi có thể cài đặt chúng, và sau đó buộc loại bỏ gói System.ValueTuple, nhưng nếu bất kỳ gói nào có bản cập nhật và tôi cài đặt bản cập nhật - thì gói System.ValueTuple được cài đặt lại và hệ thống ngừng xây dựng cho đến khi tôi xóa gói lại .

Nói cách khác, tôi có thể làm cho tất cả hoạt động - nhưng có vẻ khó xử và kludgy. Chắc chắn có một cách tốt hơn để tiếp cận điều này?

+0

Bạn đang sử dụng phiên bản gói nào? Tôi hy vọng điều này sẽ được sửa nếu bạn cập nhật lên phiên bản tiền phát hành (4.4) của gói ValueTuple. –

+0

Vận chuyển VS2017 và C# v7 trước khi 4.7 được thực hiện là không có gì ngắn từ một sai lầm lớn lớn. Công cụ này chưa được thực hiện và nhắm mục tiêu 4.7 quá sớm. Bạn sẽ cho tôi một nhức đầu khá lớn, tôi không thể cài đặt 4.7 trên máy tính của mình và không thể chẩn đoán được. Đối phó với bản cập nhật của Microsoft là nhận được một pita khá lớn doggone gần đây. Đợi đấy. –

+1

Xin lỗi vì trục trặc. Chúng tôi vừa đẩy gói System.ValueTuple (ổn định) được cập nhật hỗ trợ đầy đủ .NET Framework 4.7. Vui lòng thử một lần. –

Trả lời

18

Có, hãy nâng cấp lên System.ValueTuple 4.4.0.

Đây là lý do tại sao:

Các NuGet gói System.ValueTuple cung cấp ValueTuple loại được yêu cầu cho các cú pháp C# tuple. Trong .NET Framework 4.7, chúng tôi đã thêm các loại trực tiếp vào mscorlib. Nếu bạn sử dụng cả hai, gói NuGet, cũng như .NET Framework 4.7, bạn sẽ thấy cùng một loại nhiều lần. Điều này dẫn đến các sự cố như báo cáo này đã được báo cáo về Stack Overflow.

Chúng tôi đã cập nhật gói NuGet để nhập các loại bộ tuple trên .NET Framework 4.7 đến mscorlib. Điều này thống nhất các loại và do đó cho phép bạn tiêu thụ các thư viện khác và các gói NuGet phụ thuộc vào System.ValueTuple trong khi vẫn nhắm mục tiêu Khuôn khổ .NET 4.7.

Xem release notes.

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