即使您只是将fsx
脚本添加到 Visual Studio,您仍然可以setup.fsx
与其他(可能)文件一起编译成普通项目fs
,因此您应该能够将脚本作为普通脚本文件保存在 Visual Studio 中,同时,从项目或构建测试的命令行工具中引用它。
我尝试使用以下test.fsx
文件执行此操作:
module Demo
#r "System.Xml.Linq.dll"
open System.Xml.Linq
let test () =
let d = XDocument(XElement(XName.Get("foo")))
d.ToString()
您肯定需要module Name
在开始时进行一些声明(以便您可以访问其他文件中的函数),否则它可以是任何fsx
文件。我使用的另一个文件是test.fs
:
module Main
open Demo
test() |> printfn "%A"
这只是为了测试,但在这里你可以编写你的单元测试。如果您使用以下命令编译文件,您将获得可以传递给 xUnit 的标准程序集(注意,编译器可以#r
从 中选择标签test.fsx
,我们不必显式编写引用):
fsc.exe --target:library test.fsx test.fs
我认为如果您添加一个库项目,然后在文件中使用类似这样的内容手动添加指向该文件的链接(可以指向解决方案结构中其他位置的文件),您可以在 Visual Studio 中获得相同的配置fsproj
:
<Compile Include="..\Eslewhere\In\Your\Project\Tree\File.fsx">
<Link>File.fsx</Link>
</Compile>
请注意,当您fsx
使用“添加项目”添加文件时,它被标记为“包含”而不是“编译”,因此它不会被编译为项目的一部分。上面应该将它包含在项目中,并且它应该告诉编译器也将它包含在已编译的程序集中。
警告:也就是说,我认为dll
使用标准单元测试来测试刚刚编译的文件可能会更好。如果您想测试fsx
文件,我只需在最后添加几行作为测试并手动运行它们(选择,Alt
+ Enter
)。原因是fsx
文件应该经常更改,因此过于可靠的测试可能会限制您的灵活性。另一方面,一旦代码变得更加可靠,将其移至dll
文件是有意义的。