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