Я использую некоторые типы F # (Matrix и др.) Из C#, поэтому мне нужно ссылаться на сборку FSharp.Core в моем проекте C#. Все идет нормально.В том числе FSharp.Core в проекте C#: конфликты разрешающего типа
Однако существуют, по-видимому, некоторые типы, определенные в mscorlib.dll (v4), которые «дублируются» в FSharp.Core (v2), например System.Tuple
и System.IObservable
. Я не могу понять, почему это в .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.
Я готов смотреть мимо этого конкретного неблаговидной дублирования, если я мог бы просто указать, какой я хочу использовать в моей программе C#, однако , Когда я пытаюсь использовать System.Tuple
типа, например, я получаю следующее сообщение об ошибке C# компилятор:
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'
путь вокруг этого, по-видимому, является 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
Однако, я не могу найти способ заставить Visual Studio отправить этот параметр в компилятор C#.
У кого-нибудь есть решение?
Обратите внимание, что версия 4.0 находится в 'c: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0 \ FSharp.Core.dll'. Вы использовали ссылку «добавить ссылку», чтобы получить ссылку? Интересно, как вы попали, ссылаясь на 2.0 в проекте 4.0. – Brian
Да, я использовал ссылку «Добавить ссылку», чтобы получить это ... однако у меня есть VS PowerTools с улучшенным диалоговом окном Add Reference, поэтому это может быть проблемой. – codekaizen
@Brian, царапина это. Я, должно быть, просмотрел его, и просто не понял, что F # v2.0 также может нацеливаться на CLRv2 и поэтому имеет два разных набора сборок. – codekaizen