Tôi đang sử dụng một số loại F # (Matrix et al) từ C# và vì vậy tôi cần tham khảo hội FSharp.Core trong dự án C# của tôi. Càng xa càng tốt.Bao gồm FSharp.Có trong dự án C#: giải quyết các xung đột loại
Tuy nhiên, có một số loại được định nghĩa trong mscorlib.dll (v4) được "sao chép" trong FSharp.Core (v2), như System.Tuple
và System.IObservable
. Tôi không thể hiểu tại sao điều này là trong Net 4. Matt Ellis specifically said they would be removed in his MSDN article:
One language suffering that [duplication] problem was F#, which previously had defined its own tuple type in FSharp.Core.dll but will now use the tuple added in Microsoft .NET Framework 4.
tôi đã sẵn sàng để nhìn qua sự trùng lặp bất lịch sự đặc biệt này nếu tôi chỉ có thể xác định những người tôi muốn sử dụng trong chương trình C# của tôi, tuy nhiên . Khi tôi cố gắng sử dụng các loại System.Tuple
, ví dụ, tôi nhận được lỗi biên dịch C# sau:
Error 2 The type 'System.Tuple' exists in both 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\mscorlib.dll' and 'c:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll'
Các con đường xung quanh này, rõ ràng, là a switch on the C# compiler command line which aliases the type:
csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll
Tuy nhiên, tôi không thể tìm cách để Visual Studio gửi tham số này tới trình biên dịch C#.
Bất kỳ ai có giải pháp cho điều này?
Lưu ý rằng phiên bản 4.0 tồn tại trong 'c: \ Program Files (x86) \ Tham chiếu Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0 \ FSharp.Core.dll'. Bạn có sử dụng 'thêm tham chiếu' để nhận tham chiếu không? Đang tự hỏi làm thế nào bạn vết thương lên tham khảo 2.0 một trong một dự án 4.0 ở nơi đầu tiên. – Brian
Vâng, tôi đã sử dụng "Thêm tài liệu tham khảo" để có được điều này ... tuy nhiên, tôi có VS PowerTools với hộp thoại Thêm tài liệu tham khảo được thiết kế tốt hơn được cài đặt, vì vậy đây có thể là vấn đề. – codekaizen
@Brian, hãy cào. Tôi phải đã duyệt đến nó, và chỉ không hiểu rằng F # v2.0 cũng có thể nhắm mục tiêu CLRv2, và do đó có hai bộ khác nhau của hội đồng. – codekaizen