Как тестировать функции C # в интерактивном режиме F # Interactive

StackOverflow https://stackoverflow.com/questions/4278922

Вопрос

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

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

Это было полезно?

Решение

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

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 # Interactive:

> #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 = ()

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top