Beim Ausführen eines .Net 4.6.1-Komponententests, der System.IO.Compression.ZipFile.Open
verwendet, erhalte ich die folgende Ausnahme, wenn das Komponententestprojekt auf einen .Net-Standard verweist 2.0 Montag:Fehlende Methodenausnahme beim Referenzieren von .Net-Standardprojekten Von .Net 4.6.1 Komponententest
System.MissingMethodException: Method not found: 'System.IO.Compression.ZipArchive System.IO.Compression.ZipFile.Open(System.String, System.IO.Compression.ZipArchiveMode)'.
at UnitTestProject.UnitTest1.TestMethod1()
das Unit-Test-Projekt wurde mit dem VS 2017 Unit-Test-Projekt erstellt (nicht die .NET-Core-one) und Referenzen wurden System.IO.Compression.FileSystem
und meine Standard-Klassenbibliothek hinzugefügt:
using System.IO.Compression;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
string zipfilename = "C:\\temp\\out.zip";
using (ZipArchive zipArchive = ZipFile.Open(zipfilename, ZipArchiveMode.Read)) { }
}
}
Die .net-Standardklasse Bibliothek ist einfach eine einzige Klasse ohne Methoden:
namespace StandardClassLib
{
public static class Zipper
{ // Class is empty.
}
}
ich den gleichen Fehler mit dem Test-Explorer in Visual Studio und von der Kommandozeile mit vstest.console.exe
bekommen.
Beachten Sie, dass sich dieses Verhalten nur in einem Komponententestprojekt zeigt, Konsolenanwendungen funktionieren einwandfrei.
Kann mir jemand helfen zu verstehen, warum dies nicht funktioniert und eine Abhilfe für dieses Problem (wenn möglich)?