Как проверить функции C # в интерактивном режиме с помощью F # Interactive - PullRequest
8 голосов
/ 25 ноября 2010

У меня есть набор статических служебных методов, включая юнит-тесты.Но мне бы хотелось иметь более интерактивный способ использования цикла тестирования -> исправления -> цикла компиляции (REPL), как в Lisp или Smalltalk, где можно сразу выполнить код в интерактивном режиме.Я пытался использовать F # Interactive для тестирования этих методов непосредственно из открытого проекта C # в VS 2010, но у меня не получилось.

Я знаю, что должен загрузить сборку (#rдиректива), откройте пространство имен и затем сможете вызывать методы (и проверять результат).Но как мне сделать это в «F # Interactive» в Visual Studio 2010?Я знаю, что это возможно с помощью окна «Немедленно», доступного в режиме отладки, но я хочу сделать это в F # Interactive в «режиме разработки», когда я пишу код.

1 Ответ

10 голосов
/ 25 февраля 2011

Вам необходимо указать путь к вашему проекту, используя директиву #I, тогда вы можете загрузить свою сборку и использовать ее. Я написал простое консольное приложение на C #, попробуйте это и заставьте работать.

using System;

namespace ConsoleApplication1
{
    public class Program
    {
        static void Main(string[] args)
        {
            PrintMessage();
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
            Console.WriteLine();
        }

        public static void PrintMessage()
        {
            Console.WriteLine("MESSAGE!");
        }
    }
}

Тогда в F # интерактив:

> #I "full path to debug directory";;

--> Added 'full path to debug directory' to library include path

> #r "ConsoleApplication1.exe";;

--> Referenced 'full path to debug directory\ConsoleApplication1.exe'

> open ConsoleApplication1;;
> Program.PrintMessage();;
MESSAGE!
val it : unit = ()

Так что это определенно работает, вам просто нужно сначала скомпилировать свои проекты. Просто не забудьте сбросить сеанс, чтобы освободить сборку заранее.

...