MathNet Numerics 需要 FsUnit.CustomMatchers 才能成功构建。 运行 没有选项

MathNet Numerics needs FsUnit.CustomMatchers to successfully build. Ran out of options

尝试使用 Visual Studio Community 15MathNet.Numerics.slnGitHub 构建最新版本的 MathNet Numerics,这需要安装用于单元测试的 DLL。

Could not resolve this reference. Could not locate the assembly "FsUnit.CustomMatchers".
Could not resolve this reference. Could not locate the assembly "FsUnit.NUnit". 
Could not resolve this reference. Could not locate the assembly "nunit.framework". 

因此在 Visual Studio 中使用 NuGet 可以成功安装以下内容。

Successfully installed 'NUnitTestAdapter.WithFramework 2.0.0' to UnitTests  
Successfully installed 'FSharp.Core 3.1.2.5' to FSharpUnitTests  
Successfully installed 'NUnit 3.0.1' to FSharpUnitTests  
Successfully installed 'FsUnit 2.0.0' to FSharpUnitTests  

唯一剩下的 DLL 是

FsUnit.CustomMatchers

我找不到。

hint..\..\packages\test\FsUnit\lib\FsUnit.CustomMatchers.dll,但是packages下没有test目录。

如何正确解决这个问题?
我需要 DLL 吗?如果需要,它位于何处?
我需要手动修复代码吗?
我需要更新提示吗?

TLDR;

如果我在没有丢失 DLL 的情况下构建,基本错误是:

A unique overload for method 'IsTrue' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: 
Assert.IsTrue(condition: Nullable<bool>, message: string, [<ParamArray>] args: obj []) : unit, 
Assert.IsTrue(condition: bool,           message: string, [<ParamArray>] args: obj []) : unit

安装

即可解决
Microsoft.VisualStudio.QualityTools.UnitTestFramework

并添加

open Microsoft.VisualStudio.TestTools.UnitTesting

签名为

Assert.IsTrue(condition: bool, message: string, [<ParamArray>] args: obj []) : unit

但这是不正确的,因为它没有安装正确的 DLL(Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllFsUnit.CustomMatchers)并且根据过去的 F# 单元测试经验,我知道字幕可能会导致误报通过这样做。

编辑:

成功安装后我想知道这是在哪里记录的。

参见:Building Math.NET Numerics

The fully automated build including unit tests, documentation and api reference, NuGet and Zip packages is using FAKE.

该解决方案使用 Paket, the F# package system. Not NuGet. It also uses FAKE,F# 构建系统。

要恢复、配置和构建所有内容,只需 运行 build.cmd(或者 build.sh,如果您使用的是 *NIX)。


路径的 /test/ 部分来自名为“dependency group”的东西,这是 Paket 的一个特性。简而言之,它可以让您按某些标准对依赖项进行分组,然后有选择地恢复它们,而不是 "all dependencies, all the time".

根据其 paket.dependencies file 判断,这个特定项目定义了四个组 - 测试、构建、数据和基准测试。我可以猜测 "Build" 具有常规构建所需的依赖项,并且 "Test" 具有测试所需的依赖项。


要使用 Paket 恢复依赖项,您需要下载 Paket,然后 运行 paket install

为了简化下载部分,该解决方案在 .paket/paket.bootstrapper.exe 包含一个引导程序,您可以 运行 下载最新的 Paket。这是一个标准的东西,它是在你通过 运行ning paket init.

初始化一个新项目时添加的

整个过程(即 运行 启动引导程序,然后 运行 启动 Paket 本身)被编码在 build.cmdbuild.sh 文件中,连同 运行宁假之后。这就是为什么我建议您只需 运行 build.cmd.