在FAKE构建脚本中运行MSTest报错:MSTest未定义问题排查
解决FAKE脚本中'MSTest未定义'的错误
我来帮你排查这个问题,结合FAKE的版本差异和你的脚本写法,主要有几个可能的原因:
1. FAKE版本导致的API拆分问题
如果你的项目用的是FAKE 5及以上版本,那你看到的旧文档确实过时了——新版本的FAKE把原来的FakeLib.dll拆分成了多个独立的程序集,MSTest相关的功能不再包含在FakeLib.dll里,而是单独放在Fake.Testing.MSTest.dll中。
你需要修改脚本,添加对这个程序集的引用,并打开对应的命名空间:
#I "packages/FAKE/tools" #r "FakeLib.dll" #r "Fake.Testing.MSTest.dll" // 新增这个引用 open Fake open Fake.Testing.MSTest // 打开MSTest的专属命名空间
2. 旧版本FAKE中的语法错误
要是你用的是FAKE 4及更早的版本,MSTest确实在Fake命名空间下,但你的脚本调用写法有问题——最后多了一个多余的()。正确的调用应该是这样的:
Target "UnitTest" (fun _ -> trace "Run Unit Tests..." !! (testDir @@ "*.Tests.dll") |> MSTest (fun p -> { p }) )
MSTest函数只需要接收配置函数和测试程序集序列两个参数,不需要额外的空参数调用。
3. 路径引用正确性问题
最后再确认一下#I "packages/FAKE/tools"这个路径是否正确,确保你的NuGet包已经正确安装,FAKE工具集确实被下载到了这个目录下,能找到对应的dll文件。
总的来说,旧文档的说明是针对早期FAKE版本的,新版本的API结构做了调整,再加上你脚本里的语法小问题,才导致了这个未定义错误。根据你的FAKE版本调整引用、命名空间,修正调用语法就能解决啦。
内容的提问来源于stack exchange,提问作者Jim Reineri
相关产品推荐
相关产品推荐

