Включение Фа-диеза. Ядро в проекте C#: разрешение коллизий типа

Я использую некоторые типы F# (Матрица и др.) от C# и таким образом, я должен сослаться на Фа-диез. Базовый блок в моем проекте C#.Пока все хорошо.

Однако существуют, по-видимому, некоторые типы, определенные в mscorlib.dll (v4), которые "дублированы" в Фа-диезе. Ядро (v2), как System.Tuple и System.IObservable. Я не могу понять, почему это находится в.Net 4. Matt Ellis конкретно сказал, что они будут удалены в его статье MSDN:

Один язык, перенося тот [дублирование], проблемой был F#, который ранее определил его собственный тип "кортеж" в FSharp.Core.dll, но будет теперь использовать кортеж, добавленный в Microsoft.NET Framework 4.

Я готов посмотреть мимо этого конкретного непристойного дублирования, если я мог бы просто указать, какой я хочу использовать в своей программе C#, как бы то ни было. Когда я пытаюсь использовать System.Tuple введите, например, я получаю следующую ошибку компилятора C#:

Ошибка 2 тип 'Система. Кортеж' существует и в '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'

Путем вокруг этого, по-видимому, является переключатель на командной строке компилятора C#, которая искажает тип:

csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll

Однако я не могу найти способ заставить Visual Studio отправлять этот параметр в компилятор C#.

У кого-либо есть решение этого?

10
задан codekaizen 28 June 2010 в 23:08
поделиться

2 ответа

Необходимо указать версию 4.0 среды выполнения F #. Эта версия соответствует версии 4.0 mscorlib и не имеет конфликтующих типов. Они будут в этом каталоге

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0

12
ответ дан 3 December 2019 в 22:34
поделиться

Вы можете разрешить конфликты, используя псевдонимы сборки C # и явно определяя исходную сборку в коде C #: например, если у вас есть тип Tuple, определенный как в сборке F #, так и в ваших библиотеках.

3
ответ дан 3 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: