2012-03-03 14 views
6

Tôi vừa cài đặt VS 11 trong Windows 8. Khi tôi nhận được giải pháp mới nhất được xây dựng với VS 2010, sau đó xây dựng nó, tôi nhận được lỗi này (trong VS 11):System.Tuple được định nghĩa trong nhiều assembly

Loại được xác định trước 'System.Tuple' được xác định trong nhiều cụm trong bí danh chung; sử dụng định nghĩa từ 'c: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll'

tôi đã không thể tìm thấy một câu trả lời qua Google . Và tôi không biết "bí danh toàn cầu" là gì. Những từ đó quá chung chung để tìm kiếm thông qua tìm kiếm của Google.

VS 11 tự động thực hiện một số thay đổi, vì vậy tôi đã xóa những thay đổi đó, biên dịch lại và gặp lỗi tương tự.

Tôi không biết phải làm gì. Bất cứ ai cũng biết làm thế nào để giải quyết lỗi này? Và bí danh toàn cầu là gì?

Edit - Đây là những tài liệu tham khảo mà hiện đang tồn tại trong dự án

tôi đã cố gắng xóa tài liệu tham khảo mà không được sử dụng nhưng tôi vẫn có những lỗi.

enter image description here

Chỉnh sửa 2 - ĐÁP

System.Tuple này, trong phạm vi lắp ráp Raven, mâu thuẫn với .NET 4.0 System.Tuple. Cảm ơn Christopher Currens vì đã giải thích điều này trong câu trả lời của anh.

enter image description here

+0

Bí danh không gian tên chung là 'global ::'. Điều đó sẽ không giúp được gì. Ghi lại danh sách các assembly trong nút References. Hoặc chỉ cần bỏ qua cảnh báo và chờ phiên bản RTM. –

+0

Điều gì sẽ xảy ra nếu bạn tìm kiếm trong trình duyệt đối tượng cho System.Tuple? Nó sẽ cho bạn thấy tất cả các hội đồng trong giải pháp của bạn xác định nó. –

Trả lời

5

Dường như Raven.Các giao dịch là một phiên bản .NET 3.5, thay vì tham chiếu .NET 4.0. Nếu bạn nhìn vào mã nguồn for RavenDB Here, bạn sẽ nhận thấy rằng nó định nghĩa một lớp Tuple<T, U> nếu nó đang được xây dựng cho .NET 3.5.

Bạn phải cập nhật dự án của mình từ .NET 3.5 lên .NET 4.0 tại một thời điểm nào đó, vì tôi cũng nhận thấy bạn có tham chiếu đến System.Core. Trong .NET 4, System.Core là tham chiếu theo mặc định và do đó tham chiếu trong dự án của bạn là thừa.

Đề xuất của tôi là bạn tìm thấy tất cả các hội đồng mà bạn đã tham chiếu trong dự án của bạn và thay thế chúng bằng các phiên bản .NET 4, nếu có. Tôi biết rằng .NET có khả năng tương thích cao hơn, trong đó nó cho phép hai phiên bản của thời gian chạy được nạp trong một quá trình cùng một lúc, nhưng tôi không thể tưởng tượng rằng nó không ảnh hưởng đến hiệu suất trên một số mức độ, thậm chí nếu chỉ một chút. Thời gian chạy .NET 4 là cao cấp trong rất nhiều cách mặc dù, cụ thể là đống đối tượng lớn. Tôi đoán tôi đang ranting một chút. Chỉ cần cập nhật những gì bạn có thể lắp ráp 4.0, hoặc thay đổi phiên bản của dự án của bạn xuống còn 3.5.

+0

Tôi vừa tìm thấy System.Tuple được định nghĩa trong Raven.Abstractions-3.5 bằng cách sử dụng trình duyệt đối tượng. Vì vậy, điều đó có nghĩa là khi tôi nâng cấp lên 4.0, nó xung đột với Raven 3.5 System.Tuple. Cảm ơn bạn! –

3

Vừa giải quyết được vấn đề tương tự. Nó xuất hiện mà tôi đã có phiên bản hardcoded của FSharp.Core trong một trong các dự án của tôi (nó đã được C# dự án, btw). Sau khi thay đổi <Reference Include="FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> đến <Reference Include="FSharp.Core" /> cảnh báo đã biến mất.

+0

Cảm ơn, nhưng tôi không có tài liệu tham khảo đó. Trong thực tế, tôi không có bất kỳ tài liệu tham khảo nào là phiên bản cụ thể. –

0

Cảm ơn, tôi có

  • bốc dỡ các dự án, sau đó
  • click chuột phải> Edit, và đặt
  • <Reference Include="FSharp.Core" />

    như bạn nói.

Cảnh báo biến mất!

1

Chạy cùng một vấn đề. Lần này dự án của tôi là .NET 4.5 và một tham chiếu .NET 3.5 dll. Nó không thành công vì có nhiều assembly cho system.tuple. Để giải quyết vấn đề này, đồng nghiệp của tôi đã đề xuất thay đổi bí danh của dự án tham chiếu (thuộc tính) từ "toàn cầu" sang cái gì khác. Điều đó sửa lỗi cảnh báo/lỗi xây dựng.