FSharp.Compiler.CodeDom для VS2008 и VS2010 рядом друг с другом - PullRequest
2 голосов
/ 28 мая 2010

Я использую FSharp.Compiler.CodeDom (из PowerPack ) для динамического создания классов F #. Проблема в том, что у меня на компьютере одновременно стоят и VS2008, и VS2010 (они работают нормально), и использование F # в этой конфигурации в лучшем случае некорректно:

  • Если я не устанавливаю InstallFSharp.msi, то в VS2008 встроенные классы жалуются на то, что не находят FSharp.Core (даже если на них есть ссылки)
  • Если я установлю InstallFSharp.msi, то в VS2008 встроенные классы будут использовать F #, созданный для VS2010, и сгенерируют исключение двоичной несовместимости, поскольку оно загрузит вариант .net4:

    FSC: ошибка FS0219: базовая библиотека CLI по умолчанию или библиотека по умолчанию 'mscorlib' является двоичной несовместим с указанной базовой библиотекой F # 'C: \ Program Files (x86) \ Microsoft F # \ v4.0 \ FSharp.Core.dll. Попробуйте перекомпилировать библиотеку или сделать явную ссылку к версии этой библиотеки, которая соответствует используемой вами версии CLI.

  • Если я заменил F #, найденный в предыдущем месте, на отдельно установленную dll-s, то, конечно, VS2010 пожалуется на двоичную несовместимость

Я что-то пропускаю, или они просто не будут работать для такой общей среды, как эта? Это может означать реальные проблемы при развертывании приложений.

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 октября 2010

У меня сама похожая проблема - ствол нашего исходного дерева настроен для сборки с VS 2008, в то время как наши последние ветви обновляются до VS 2010. Ситуация F #, по меньшей мере, утомительна.

Ответ, который мы нашли, заключается в использовании флага компилятора --noframework. С этим параметром вы можете (должны) указать, какие mscorlib.dll и System.dll вы хотите использовать, и, следовательно, можете создавать их на любой поддерживаемой платформе .NET.

1 голос
/ 08 февраля 2012

Я исправил проблему, которая могла или не могла быть одинаковой с reghack (Windows 7): Редактор реестра Windows, версия 5.00

[- HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ FSharp \ 2.0 \ Время воспроизведения]

Я считаю, что путь разрешения для поиска файлов / компиляторов означает, что этот хак заставит их работать параллельно, но только протестировал вариант 2.0. Как и в случае с любым другим хаком, вы должны сначала создать резервную копию этого ключа.

1 голос
/ 11 октября 2010

Учитывая, что вы изначально задавали вопрос некоторое время назад, мне интересно, есть ли у вас самый последний PowerPack? Примечательно, что вы задаете вопрос 27 мая, но я вижу на странице загрузок, что он последний раз обновлялся 30 мая. Я не знаю, влияет ли это на что-то, просто указываю на это.

Я также немного отредактировал вопрос, на случай, если это переместит вопрос наверх и заставит Томаса увидеть его и ответить:)

...