Обратите внимание, что выполнение так будет ненадежно в коде выпуска, из-за оптимизации. Кроме того, запуск приложения в режиме песочницы (сетевой ресурс) не позволит Вам захватывать стековый фрейм вообще.
Рассматривают аспектно-ориентированное программирование (AOP), как PostSharp, который вместо того, чтобы быть названным от Вашего кода, изменяет Ваш код, и таким образом знает, где это в любом случае.
strong text Я действительно начал работать над новой привязкой F # для MonoDevelop. Я отправлю новость, как только у меня будет чем поделиться.
Странно, похоже, я не могу добавить комментарий к своему ответу ... В любом случае, я хотел бы начать с базовой функциональности, позволяющей создавать и компилировать проекты F #. Когда это будет сделано, я подумаю о реализации таких вещей, как автозаполнение и тому подобное.
Обновление: Из-за недавнего пополнения в нашей семье я не смог завершить свою работу. К счастью, кто-то другой взял на себя усилия, и результаты его работы находятся здесь: http://github.com/vasili/FSharpBinding
Я думаю, что аддон MonoDevelop будет вашим лучшим выбором. К сожалению, на данном этапе запрос на зрелый компилятор F # (даже в Windows) - это немного натянуто.
Он даже официально не выпущен для Windows (CTP все еще для VS 2008, а 2010 все еще бета).
Я использую Aquamacs и некоторые хуки в режиме Tuareg. - Нет завершения .Net (здесь есть режим C #), но режим dabrev:
;; F# specific configs
;; hooked ocaml tuareg mode. If you do ML with mono e. g.
(add-to-list 'load-path "~/.elisp/tuareg-mode")
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger" t)
(autoload 'tuareg-imenu-set-imenu "tuareg-imenu"
"Configuration of imenu for tuareg" t)
(add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
(setq auto-mode-alist
(append '(("\\.ml[ily]?$" . tuareg-mode)
("\\.topml$" . tuareg-mode))
auto-mode-alist))
;; now we use *.fs files for this mode
(setq auto-mode-alist (cons '("\\.fs\\w?" . tuareg-mode) auto-mode-alist))
(add-hook 'tuareg-mode-hook
'(lambda ()
(set (make-local-variable 'compile-command)
(concat "fsc \""
(file-name-nondirectory buffer-file-name)
"\""))))
(defun tuareg-find-alternate-file ()
"Switch Implementation/Interface."
(interactive)
(let ((name (buffer-file-name)))
(if (string-match "\\`\\(.*\\)\\.fs\\(i\\)?\\'" name)
(find-file (concat (tuareg-match-string 1 name)
(if (match-beginning 2) ".fs" ".fsi"))))))
Вы получаете подсветку синтаксиса от Ocaml (очень похожую), и она заботится о пробелах. У меня были проблемы с разветвлением FSI от Shell, потому что кажется, что при наборе есть задержка. Я не исследовал эту проблему и перешел на VisualStudio.
В качестве альтернативы существует пакет Textmate F # . Я проверил это полминуты, и он работает. Однако у вас нет опции Alt + Enter в VS, чтобы оценить отмеченные детали непосредственно в интерактивной подсказке.