クラスライブラリプロジェクトを、Nugetパッケージを含む.Netstandard1.4に移行しました。System.Net.Http "Version =" 4.3.2 "クラスライブラリをNetStandard1.4に移行すると、Nunitテストの実行中に例外が発生する
のXML .cprojを以下に記載する:(NUnitのバージョン2.4.6を使用して)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Net.Http" Version="4.3.2" />
</ItemGroup>
</Project>
マイユニットテストは、依然として(マイグレーションなし)クラスライブラリプロジェクト(.NET 4.6.1)であり、基準myStandard1 .4ライブラリとそれが正常にコンパイルされました。
私はResharpで2017を使用していますエル。私はユニットテストを実行しようとすると、例外が発射される
:それはその「System.Net.Http、バージョン= 4.1.1.1」でないバージョン「4.3.2」と言う
System.IO.FileNotFoundException : Could not load file or assembly 'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
ノートNetStandard 1.4ライブラリで使用します。
私はnet461を追加することにより、マルチターゲットをサポートするために.NetStandardプロジェクトを変更する必要がありましたし、例外が消失し、正常に動作:
<TargetFrameworks>netstandard1.4;net461</TargetFrameworks>
私の質問:
Q1:例外はを要求する理由"System.Net.Http、Version = 4.1.1.1" NetStandard1.4で使用するバージョン "4.3.2"はありませんか?
Q2:なぜマルチターゲットnet461を追加すると、問題が解決しましたか?.NET platforms support for .netstandard1.4 support net461?
質問3:ユニットテストクラスライブラリプロジェクトを他のタイプに移行する必要がありますか?このタイプは何ですか?
System.Net.Httpを手動でインストールしましたが、ロジックではない別のアセンブリを別にインストールする必要があります。また、あなたの参照に記載されているようにPropertyGroupを追加しましたが、生成された.dll.configはありません。 NetStandardのアセンブリはプロジェクトでは表示されないようです。これらのアセンブリはどこにありますか?プロジェクトでどのように見えるか? –
「NETStandard.Library」バージョン1.6をインストールすることもできます。1を使用するか、プロジェクトを使用してpackages.configの代わりにNuGetパッケージを参照するPackageReferenceスタイルの方法を使用します。 –
PackageReferenceスタイルの方法または私の質問でマルチターゲットを使用して説明されているように動作しています。奇妙なコンパイルは成功ですが、問題は実行時に発生します。ところで、私のコンソールアプリケーションはnetstandrdで動作しません。マルチターゲットでは、外部参照はnetstandard.libでコピーされ、問題は消えます。 NunitまたはConsoleアプリケーションでNetstandardクラスライブラリを使用する公式の方法で、ドキュメント/デモの例を教えてください。ありがとう –