Я использую некоторые типы F # (Matrix и др.) из С#, поэтому мне нужно ссылаться на сборку FSharp.Core в мой проект С#. Пока что так хорошо.
Однако существуют, по-видимому, некоторые типы, определенные в mscorlib.dll(v4), которые "дублируются" в FSharp.Core(v2), например System.Tuple
и System.IObservable
. Я не могу понять, почему это происходит .Net 4. Мэтт Эллис специально сказал, что они будут удалены в его статье MSDN:
Один язык, страдающий этой проблемой [дублирования], был F #, который ранее определял свой собственный тип кортежа в FSharp.Core.dll, но теперь будет использовать кортеж, добавленный в Microsoft.NET Framework 4.
Я готов посмотреть прошлое этого неподходящего дублирования, если бы я мог просто указать, какой из них я хочу использовать в своей программе на С#. Когда я пытаюсь использовать тип System.Tuple
, например, я получаю следующую ошибку компилятора С#:
Ошибка 2 Тип 'System.Tuple' существует как в c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\mscorlib.dll 'и' c:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll '
Похоже, что это вокруг переключатель в командной строке компилятора С#, который псевдонизирует тип:
csc.exe MyType.cs/reference:System.Tuple`2=mscorlib.dll/reference:FSharp.Core.dll
Однако я не могу найти способ заставить Visual Studio отправить этот параметр компилятору С#.
У кого-нибудь есть решение?