2016-10-25 5 views
12

Microsoft sagt, dass es heutzutage plattformneutral ist, also versuche ich auf Mac und Linux nur mit VS-Code aufzubauen und nach Azure zu deployen. Warum? Es ist hauptsächlich um zu beweisen, dass ich es kann.Eine DLL zwischen Projekten teilen

Unser Projekt hat mehrere Teile, die ein paar verschiedene Websites, eine Web-API, API und einige andere Bits enthalten. Auf meinem Mac habe ich eine .Net Core Class Library mit einer Ladung von Objekten erstellt. Befehlszeile, dotnet build, DLL out, kein Problem.

Ich möchte diese DLL auf der Linux-Maschine, wo die MVC-Website gebaut wird - die Objekte, die die Modelle Teil dieser Website bilden hoffentlich. Ich kann nicht herausfinden, wie ich das Website-Projekt dazu bringen kann, auf meine DLL zu verweisen und die Objekte zu verwenden.

Ich hatte angenommen, dass ich es auf die andere Maschine kopiere, stelle es in den Ordner bin der zu entwickelnden Seite und referenziere es im Abschnitt Abhängigkeiten der Website project.json. Nee. Ich sah ein paar Artikel, die sagten. Net Core funktioniert nur mit NuGet und es musste ein Paket sein. Ist das wirklich wahr?

Ich habe gefunden und gelesen (wenn nicht vollständig verstanden) alles, was Sie sich vorstellen können beim Teilen zwischen .net-Kern und .net-Framework. Dies ist ein Nur-Kern-Projekt, das nicht anwendbar ist. Ehrlich gesagt bin ich verloren und etwas namens .Net Standard ist gerade in mein Sichtfeld gerollt.

Antwort

13

Anstatt also die DLL zu kopieren, verwenden Sie dotnet pack, um ein nugget-Paket auf Ihrem Mac zu erstellen, und kopieren Sie stattdessen , auf Ihren Linux-Rechner. Fügen Sie es in ein Verzeichnis ein, das Sie als lokales nuget-Repository konfigurieren (kein Server oder irgendetwas benötigt), und Sie sind weg.

Ich stimme zu, es ist nicht so einfach wie ein Verweis auf eine DLL, aber es ist nicht so schlimm. Beachten Sie, dass Sie das Paket entsprechend versionieren müssen, damit das Tool-System erkennen kann, wenn es geändert wird.

+0

Und wir haben einen Gewinner. Sobald ich den Eintrag für ein lokales Repository in der * korrekten * nugget.config hatte, war ich weg. Ich habe heute nachmittag eine Stunde damit verschwendet und versagt. Stellt sich heraus, ich habe nugget /users/me/.config/nuget und der Dotnet-Wiederherstellungsprozess verwendet stattdessen die in /users/me/.nuget/nuget/. Weil, warum nicht ... Also sowieso, sortierte, dass dotnet über VS-Code wiederherstellen und alles ist gut in meiner Welt. Danke für die Hilfe :) –

Verwandte Themen