1

在尝试MathNet NumericsGitHub构建最新版本时Visual Studio Community 15MathNet.Numerics.sln需要安装用于单元测试的 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

我无法找到。

提示..\..\packages\test\FsUnit\lib\FsUnit.CustomMatchers.dll,但下没有test目录packages

我该如何正确解决这个问题?
我需要 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.dllvs FsUnit.CustomMatchers),并且根据过去的 F# 单元测试经验,我知道这样做可能会导致误报的字幕。

编辑:

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

请参阅:构建 Math.NET 数值

unit tests包括文档和 api 参考、NuGet 和 Zip 包在内的全自动构建使用 FAKE。

4

1 回答 1

2

该解决方案使用F# 包系统Paket 。不是 NuGet。它还使用FAKE构建系统。

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


路径的/test/一部分来自一个叫做“依赖组”的东西,它是 Paket 的一个特性。简而言之,它允许您按某些标准对依赖项进行分组,然后有选择地恢复它们,而不是“所有依赖项,一直”。

从它的paket.dependencies 文件来看,这个特定的项目定义了四个组 - 测试、构建、数据和基准测试。我可以猜测“构建”具有常规构建所需的依赖项,而“测试”具有测试所需的依赖项。


要使用 Paket 恢复依赖关系,您需要下载 Paket 然后运行paket install​​.

为了简化下载部分,该解决方案包括一个引导程序 at .paket/paket.bootstrapper.exe,您可以运行它以下载最新的 Paket。这是一个标准的东西,它是在您通过运行初始化新项目时添加的paket init

整个过程(即运行引导程序,然后运行 ​​Paket 本身)被编码到build.cmd文件build.sh中,然后运行 ​​FAKE。这就是为什么我建议您简单地运行build.cmd.

于 2016-02-26T18:16:27.953 回答