メソッドGetNodesで簡単なクラスライブラリを作成し、選択したディレクトリの内容を調べました。ユニットテスト.Netコアライブラリ - ファイルまたはアセンブリをロードできませんでした
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
public void GetNodes(string directoryPath)
{
if (directoryPath == null)
throw new ArgumentNullException("directoryPath");
//Remove white-space characters from the start and end of path.
directoryPath = directoryPath.Trim();
bool isWindows = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
(...)
}
project.json:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.3.0"
},
"frameworks": {
"netstandard1.3": {
"imports": "dnxcore50"
}
}
}
プロジェクトが正常にビルドされています。
Test Name: DetectException_WhenCorrectExceptionIsThrown
Test FullName: Task_2_Test.FileManagerTests.DetectException_WhenCorrectExceptionIsThrown
Test Source: D:\Git\task_2\Task_2\test\Task_2_Test\FileManagerTests.cs : line 25
Test Outcome: Failed
Test Duration: 0:00:00,0152049
Result StackTrace:
at Task_2.FileManager.GetNodes(String directoryPath)
at Task_2_Test.FileManagerTests.DetectException_WhenCorrectExceptionIsThrown() in D:\Git\task_2\Task_2\test\Task_2_Test\FileManagerTests.cs:line 30
Result Message:
Test method Task_2_Test.FileManagerTests.DetectException_WhenCorrectExceptionIsThrown threw exception System.IO.FileNotFoundException, but exception System.ArgumentNullException was expected. Exception message: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Nie można odnaleźć określonego pliku.=== Pre-bind state information ===
LOG: DisplayName = System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///D:/Git/task_2/Task_2/test/Task_2_Test/bin/Debug
LOG: Initial PrivatePath = NULL
Calling assembly : Task_2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\VISUAL STUDIO EXPRESS 2015\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: Attempting download of new URL file:///D:/Git/task_2/Task_2/test/Task_2_Test/bin/Debug/System.Runtime.InteropServices.RuntimeInformation.DLL.
LOG: Attempting download of new URL file:///D:/Git/task_2/Task_2/test/Task_2_Test/bin/Debug/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices.RuntimeInformation.DLL.
LOG: Attempting download of new URL file:///D:/Git/task_2/Task_2/test/Task_2_Test/bin/Debug/System.Runtime.InteropServices.RuntimeInformation.EXE.
LOG: Attempting download of new URL file:///D:/Git/task_2/Task_2/test/Task_2_Test/bin/Debug/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices.RuntimeInformation.EXE.
:私は、私はこのエラーを取得するテストを実行するたびに、単純なユニットテストプロジェクト(.NET Frameworkの4.6)
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void DetectException_WhenCorrectExceptionIsThrown()
{
FileManager fm = new FileManager();
fm.GetNodes(@"c:\");
}
を作成し、いくつかのユニットテストを実行するために、次に
私はこのエラーがSystem.Runtime.InteropServices(私はこのライブラリを使用して現在のOSをチェックして、ディレクトリパスの正しい構文を確認する)と関連していることを知っています。
私はこの機能を辞退したくありませんが、これに対処する方法はわかりません。
Btw。私の夢はVisual Studio Community 2015です。
ご協力いただきありがとうございます。
VS2017 RCを使ってみてください。これは、最新のSDKとIDE機能を使用する唯一の方法です。 project.jsonについては忘れてください。 –
あなたのクラスライブラリは 'System.Runtime.InteropServices.RuntimeInformation'に依存してはいけませんか? –
VS2017 RCをインストールしましたが、これはうまくいきました。私は最後のIDEにいくつかの完全性の問題があったと思う。(インストールの修復、パッケージの不足など) – David762