2016-10-10 2 views
3

Кто-нибудь знает, что F # эквивалентно утверждению C# 'extern alias', как описано здесь? https://blogs.msdn.microsoft.com/abhinaba/2005/11/30/c-2-0-using-different-versions-of-the-same-dll-in-one-application/F # Эквивалент «внешнему псевдониму» C#

Мне нужно использовать две версии dll с таким же именем, но VS IDE не позволяет мне добавлять более одного.

ответ

2

Я не думаю, что это возможно.

языка спецификация не упоминает об этом, а также возможность --reference компилятора fsc.exe не принимает ссылку псевдонима (несмотря на this page называя это эквивалентна опцией компилятора C#).

Если вам действительно нужна эта функциональность, обертывание extern alias использует в проекте C# и ссылается на этот проект из F #, кажется, ваша самая безопасная ставка. Альтернативно загружайте одну или обе библиотеки dll динамически, используя Assembly.LoadFrom.

+0

Спасибо за подсказки. Похоже, последнее проще, поскольку первое решение будет состоять из 4 dll - по одному для каждой из двух оберток, а затем для базовых dll, правильно? –

+0

Я думал о двух базовых DLL, а затем в оболочке C#, использующей extern-псевдоним и предоставляя функциональность от обоих, а затем к файлу F #, который его использует. Если другое решение работает для вас, это тоже хорошо. – scrwtp

+0

Чтобы прояснить предыдущий комментарий, невозможно «отмыть» псевдоним через C# - он будет локальным для проекта C#, в котором определяется псевдоним. Но вы можете предоставить функциональность классам F # через C#. –

Смежные вопросы