Alexey Suvorov dev blog

Мой разработческий блог

Archive for Ноябрь 2012

Visual studio 12 F# interactive — mixed mode assembly error

leave a comment »

Давно и широко использую f# для автоматизации операций по настройке энвайрмента. Создать и накататьи на неё все update скрипты, или обработать лог файлы с помощью pattern matching. Запускаю я это прямо из студии в f# Interactive, но с переходом на 12 студию возникла проблема с загрузкой сборок не 4.0. Такая проблема уже была в 2012 студии, но как-то забылось за давностью.

Итак, студия описывала проблему совершенно однозначно:

Mixed mode assembly is built against version ‘v2.0.50727’ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

Решение тоже хорошо известно из интернетов:

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>

Но поискав на диске «fsi.exe.config» и добавив кусок выше во все найденные файлы я не добился никакого результата. Вариантов было множество от копания в конфигурациях расширений IDE, до долгих поисков в интернете, но я подумал, что F# Interactive в студии точно не тред а процесс, поэтому просто запустил procexp.

Не буду томить долгими историями, но оказалось что моя студия использует FsiAnyCPU.exe, который был расположен в совсем уж неожиданной папке:
C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0
FsiAnyCPU process

UPD: в VS 2013 Update 1 у меня FSI переехал в C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0

Written by alexeysuvorov

05.11.2012 at 4:19 пп

Опубликовано в F#, F# interactive, VS 11