1

単体テスト用の DLL をインストールする必要があるものを使用して、 GitHubMathNet Numericsからの最新バージョンをビルドしようとしています。Visual Studio Community 15MathNet.Numerics.sln

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がありません。testpackages

これを正しく解決するにはどうすればよいですか?
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 ではありません。また、F# ビルド システムであるFAKEも使用します。

すべてを復元、構成、および構築するには、実行するだけですbuild.cmd(またはbuild.sh*NIX を使用している場合)。


パスの部分は、パケットの機能である「依存グループ/test/」と呼ばれるものに由来します。簡単に言えば、依存関係をいくつかの基準でグループ化し、「すべての依存関係を常に」ではなく選択的に復元できます。

この特定のプロジェクトは、そのpaket.dependencies ファイルから判断すると、4 つのグループ (テスト、ビルド、データ、およびベンチマーク) を定義しています。「ビルド」には通常のビルドに必要な依存関係があり、「テスト」にはテストに必要な依存関係があると推測できます。


Paket を使用して依存関係を復元するには、Paket をダウンロードして実行する必要がありますpaket install

ダウンロード部分を合理化するために、ソリューションには にブートストラッパーが含まれ.paket/paket.bootstrapper.exeており、これを実行して最新のパケットをダウンロードできます。これは標準的なもので、 を実行して新しいプロジェクトを初期化するときに追加されますpaket init

そして、プロセス全体 (つまり、ブートストラップを実行してから Paket 自体を実行する) はbuild.cmdbuild.shファイルにエンコードされ、その後 FAKE が実行されます。これが、単に実行することを提案した理由ですbuild.cmd

于 2016-02-26T18:16:27.953 に答える