public void Test(string input, bool isValid)
        {
            var temp1 = Path.GetTempFileName();

            var fn1 = Path.ChangeExtension(temp1, ".fsx");


            File.WriteAllText(fn1, input);
            var           fn2     = Path.ChangeExtension(temp1, ".dll");
            FSharpChecker checker = FSharpChecker.Create(FSharpOption <int> .None,
                                                         FSharpOption <bool> .None,
                                                         FSharpOption <bool> .None,
                                                         FSharpOption <ReferenceResolver.Resolver> .None,
                                                         FSharpOption <FSharpFunc <Tuple <string, DateTime>,
                                                                                   FSharpOption <Tuple <object, IntPtr, int> > > > .None,
                                                         FSharpOption <bool> .None);
            var result = checker.CompileToDynamicAssembly(new[] { "-o", fn2, "-a", fn1 },
                                                          FSharpOption <Tuple <TextWriter, TextWriter> > .None, FSharpOption <string> .None);
            var t = Microsoft.FSharp.Control.FSharpAsync.RunSynchronously(result, FSharpOption <int> .None,
                                                                          FSharpOption <CancellationToken> .None);

            if (isValid)
            {
                t.Item1.Should().BeNullOrEmpty();
            }
            else
            {
                t.Item1.Should().NotBeNullOrEmpty();
            }
        }
예제 #2
0
        internal FSharpAssembly(FSharpCompilerOptionsBuilder builder, FSharpChecker checker)
        {
            var args = builder.ToArray();

            var task = checker.CompileToDynamicAssembly(
                args,
                FSharpOption <Tuple <TextWriter, TextWriter> > .None,
                FSharpOption <string> .None);

            var result = FSharpAsync.RunSynchronously(task, default, default);