2016-06-16 27 views
3

Ich verwende die neueste Version von XUnit und ich folgte these steps, um das Klassenbibliothek (.NET Core) -Projekt gestartet zu bekommen.Referenzieren von Standard-DLLs aus einem .NET Core XUnit-Projekt

Alle anderen Bibliotheken während meiner gesamten Lösung nur 4.6.1 so verwenden änderte ich den Frameworks Abschnitt in project.json auf die folgenden:

{ 
    "frameworks": { 
     "net461": { 
      "dependencies": { 
       "Microsoft.NETCore.Platforms": "1.0.1-rc2-24027" 
      } 
     } 
    } 
} 

und alles funktioniert Innenseite meiner Lösung. Ich bin in der Lage, Tests durchzuführen und alle Verweise auf andere Bibliotheken funktionieren gut, obwohl sie nur 461 sind. Grundsätzlich habe ich in meiner Lösung mehrere andere Klassenbibliotheken (.NET Core) und meine XUnit-Bibliothek verlässt sich auf sie, so dass ich sie einfach durch Visual Studio referenzieren kann und die Referenzen zur Projekt.json-Datei des XUnit-Projekts hinzugefügt werden.

Eine Situation entstanden, wo ich folgendes tun müssen:

Kopie nur die XUnit Projekt auf einen anderen Entwickler Computer. Erlaube ihm, den Quellcode zu bearbeiten, damit er Tests erstellen kann, aber nicht auf alle anderen Bibliotheken/Codes zugreifen kann. Ich dachte mir, ich würde einfach alle anderen DLLs in einen zufälligen Ordner kopieren und sie vom eigenständigen XUnit-Projekt aus referenzieren können. Dies ist jedoch nicht der Fall, da beim Versuch, eine Referenz zu erstellen, ein Fehler auftritt, der besagt, dass .NET Core-Projekte keine Standard-DLLs referenzieren können.

Kann mir jemand eine Idee geben, wie ich das machen kann?

Antwort

6

Sie sollten Ihre Bibliotheken als nugget-Pakete verteilen.

.NET-Kern funktioniert mit Abhängigkeiten nur über Nuget. Auch wenn Sie eine Referenz mit VS UI (Befehl "Referenz hinzufügen") im Hintergrund hinzufügen, wird die Referenz als ein nugget-Paket hinzugefügt: Wenn Sie die Datei project.json öffnen, sehen Sie, dass Ihre Bibliotheken im selben "package: version" -Format angegeben sind im Abschnitt "Abhängigkeiten" wie andere).

Um den Code in das Nuget-Paket zu packen, verwenden Sie den Befehl dotnet pack.

Wenn Sie keine öffentlichen Nuget-Quellen verwenden, können Sie Hosting Your Own Nuget Feed.

+0

Danke, ich habe am Ende meinen eigenen benutzerdefinierten Feed erstellt und nuget.exe verwendet, um alle DLLs in ein Paket zu packen und dann darauf zu verweisen! –

+0

Das Referenzieren von Assemblys direkt von der Festplatte sollte verfügbar sein, wenn .NET Core 2.0 ausgeliefert wird. https://github.com/dotnet/sdk/issues/120 –

+0

@JaanusVarus: sieht nicht so aus wie es möglich ist. Die Option ist vorhanden, die Kompilierung für die Typen in der referenzierten Assembly funktioniert, aber zur Laufzeit wird die referenzierte Assembly nicht gefunden, da sie nicht zu TRUSTED_PLATFORM_ASSEMBLIES hinzugefügt wird. Hauptschmerz im hinteren Bereich. – Wout