Ich erstelle eine wiederverwendbare Bibliothek, die auf verschiedene Plattformen abzielt (.NET 4.0, .NET 4.5, .NETStandard 1.0 und .NETStandard 1.3). Die .NET 4.5-Version dieses Projekts enthält einige Funktionen, die unter der .NET 4.0-Version nicht verfügbar sind.
Das Komponententestprojekt, das auf dieses Bibliotheksprojekt verweist, hat eine einzige Zielplattform, nämlich NET 4.5.1. Dieses Testprojekt enthält offensichtlich Code, der die .NET 4.5-spezifischen Features der Core-Bibliothek testet.
Leider kompiliert das Testprojekt jedoch nicht, da Visual Studio auf die Version .NETStandard 1.0 zu verweisen scheint, die diese Funktion offensichtlich nicht enthält.
Um mein Problem zu demonstrieren, habe ich das auf die folgenden zwei Projekte reduziert:
Hauptbibliothek:
%Vor%Code-Datei:
%Vor%Testbibliothek:
%Vor%Code:
%Vor%Was muss ich ändern, damit mein Einheitentestprojekt die spezifischen .NET 4.5-Funktionen kompilieren und testen kann?
Es scheint einen Fehler in Visual Studio-Tools für .NET Core zu geben. Wenn Sie ein Multi-Framework-Projekt von einem anderen Framework aus referenzieren - Visual Studio nimmt nur das erste gelistete Framework aus einer Liste (in Ihrem Fall - "netstandard1.0") und behandelt das referenzierte Projekt als einzelnes Ziel für dieses Framework. Der Compiler handhabt dies jedoch korrekt, und während es scheint , baut das Projekt korrekt auf - in Wirklichkeit tut es das nicht. Wenn Sie andererseits ClassNet45
definition verwenden - es scheint , dass es nicht kompiliert wird (Visual Studio zeigt Fehler an) - es wird wirklich erfolgreich kompiliert.
Es scheint, dass Visual Studio-Tools für .NET Core noch nicht ausreichend ausgereift sind, aber wahrscheinlich wird dieser Fehler in naher Zukunft gelöst werden.
Tags und Links .net c# visual-studio visual-studio-2015 project.json