Ich versuche, .Net Framework und NetStandard Assemblies miteinander zu kommunizieren (um zu lernen, was möglich ist). Ich habe derzeit vier Projekte, zwei Rahmen 4.5.2 Projekte und zwei NetStandard1.2 Projekte:Referenzieren zwischen NetStandard und .Net Framework
Framework452.Library
NetStandard12.CentralLibrary
NetStandard12.BaseLibrary
Framework452.Tests
Die Referenzierung Struktur ist:
Framework452.Tests
ReferenzenNetStandard12.CentralLibrary
: funktioniert durch Hinzufügen der NetStandard.Library Nugget-Paket zuFramework452.Tests
.NetStandard12.CentralLibrary
ReferenzenNetStandard12.BaseLibrary
: funktioniert ohne Änderung.NetStandard12.CentralLibrary
ReferenzenFramework452.Library
: Nicht funktioniert, auch wennFramework452.Library
das NetStandard.Library nuget-Paket installiert ist.
Können NetStandard-Projekte auf Framework-Projekte verweisen? Wenn ja, was muss ich tun, damit sie kommunizieren können? Im Moment kann ich die Referenz hinzufügen, aber sie ist für den Code nicht sichtbar.
aktualisieren
neu erstellt ich die Lösung und hinzugefügt, um den Code unten, die, wenn ich versuche, gibt die folgende Fehlermeldung aus dem Framework452.Tests
Projekt zu kompilieren:
CS0006 Fehler: Metadaten Datei ‚~ \ TryNETStandard \ NetStandard12.CentralLibrary \ bin \ Debug \ netstandard1.2 \ NetStandard12.CentralLibrary.dll ' konnte nicht gefunden werden.
namespace Framework452.Library
{
public class Returner452 {
public static bool ReturnTrue() { return true; }
}
}
using Xunit;
namespace Framework452.Tests
{
public class Class1 {
[Fact]
public void FrameworkTest() {
Assert.True(NetStandard12.CentralLibrary.Class1.Return452());
}
[Fact]
public void NetStandardTest() {
Assert.True(NetStandard12.CentralLibrary.Class1.Return12());
}
}
}
namespace NetStandard12.BaseLibrary
{
public class Returner12 {
public static bool ReturnTrue() { return true; }
}
}
using Framework452.Library;
using NetStandard12.BaseLibrary;
namespace NetStandard12.CentralLibrary
{
public class Class1
{
public static bool Return452() { return Returner452.ReturnTrue(); }
public static bool Return12() { return Returner12.ReturnTrue(); }
}
}
Das Setup, das ich hatte, war das gleiche, und alles, was ich tat, war 'CentralLibrary' Aufruf statische Methoden, die eine' bool' aus 'BaseLibrary' und' zurückgeben würde Bibliothek'. Dann testen Sie diese 'bool's in' Tests'. Ich werde ein bisschen später nochmal darauf eingehen. – Ayb4btu
Verwenden Sie VS 2017? Mit VS 2017, ich glaube nicht, dass Sie Nuget Meta-Paket für netstandard beziehen müssen. Das VS 2017-Toolset sollte die neue Projektdatei im .csproj-Format analysieren und "dotnet restore" automatisch für Sie durchführen. – LxL
Hier ist meine csproj für NetStandard12.CentralLibrary netstandard1.2 TargetFramework> Propertygroup> –
LxL