Erstellen einer .NET Core App über die Befehlszeile, so dass sie auf einem Computer ohne .NET Core funktioniert

Mein end-Ziel ist ein cross-Plattform (nicht-web) - Konsole-Anwendung, so bin ich, Sie zu erkunden .NET Core jetzt.

In meinem vorherigen .NET-Projekten, ich habe alles getan, die Entwicklung in Visual Studio, aber ich habe auch ein batch - /MSBuild-Datei, damit ich bauen könnte, das ganze Projekt (einschließlich setups, von NuGet-Paketen, die zip-Dateien mit binaries etc.) mit einem einzigen Klick. Hier ist ein Beispiel aus einem früheren Projekt.

Am Ende, ich möchte etwas ähnliches machen mit meiner .NET-Core-test-Projekt.

Aber bis jetzt bin ich in Ermangelung an den ersten Schritt: ich bin nicht in der Lage, es zu bauen, außerhalb von Visual Studio, so dass das Ergebnis funktioniert auf einem anderen Windows-Rechner ohne .NET Core installiert ist.

(im ersten Schritt, ich Ignoriere die cross-Plattform-Teil - ich werde glücklich sein, um es zu erhalten zu arbeiten auf Windows)


Was ich

Habe ich es geschafft es zum laufen zu bringen innerhalb von Visual Studio 2015 Community Edition wie folgt:

  1. neues Projekt anlegen in Visual Studio: "Neues Projekt" ⇒ "Web" ⇒ "Console-Anwendung (Paket)"

  2. erstellen, neu zu veröffentlichen, das Profil in Visual Studio ("Build" ⇒ "Veröffentlichen" im Menü).

    Dadurch wird ein PowerShell-Skript (und eine XML-Datei mit Einstellungen)

Hier mein test-Projekt auf GitHub.

Wenn ich "Build" ⇒ "Veröffentlichen" im Menü wieder, Visual Studio offenbar führt die zuvor erstellte PowerShell-Skript erneut aus.

Das Ergebnis ist etwas über 90 MB, besteht aus 825-Dateien in 598 Ordner und sieht wie folgt aus:

Erstellen einer .NET Core App über die Befehlszeile, so dass sie auf einem Computer ohne .NET Core funktioniert

Wenn ich kopieren Sie es auf einem anderen Rechner (Win 7 /.NET 4 installiert .NET Core nicht installiert), funktioniert es.


Was ich versucht habe, um das gleiche Ergebnis außerhalb der Visual Studio

1. dotnet veröffentlichen

Diese Antwort und diese Antwort sound wie ich verwenden können dnu publish das gleiche Ergebnis zu erzielen über die Kommandozeile.

Ich verstehe, dass Teile des .NET Core sind noch bewegliche Ziele, gerade jetzt, so offenbar dnu ist jetzt dotnet statt.

Also habe ich versucht auszuführen dotnet publish (und erstellt eine batch-Datei):

dotnet publish "%~dp0\src\CoreTestVisualStudio" -c Release -r win7-x64 -o "%~dp0\release\cli"

Das Ergebnis besteht aus einem .exe - Datei und eine Reihe von DLLs, nur 25 Dateien und 1,5 MB, alle in einem einzigen Ordner:

Erstellen einer .NET Core App über die Befehlszeile, so dass sie auf einem Computer ohne .NET Core funktioniert

Offensichtlich .NET-Core-runtime fehlt hier, und wie erwartet, ist diese app stürzt ab, wenn ich versuche, führen Sie es auf einem Computer ohne .NET Core installiert (die gleichen wie oben erwähnt).

2. Das PowerShell-Skript aus dem veröffentlichen-Profil

Habe ich versucht auszuführen das PowerShell-Skript (die erstellt wurde, wenn ich die erstellt habe veröffentlichen Profil) außerhalb von Visual Studioaber es ist fehlgeschlagen, da das Skript erwartet einige Parameter, und ich weiß nicht, was zu passieren:

param($publishProperties, $packOutput, $nugetUrl)

Gibt es auch diese Zeile in das Skript:

# to learn more about this file visit http://go.microsoft.com/fwlink/?LinkId=524327

...aber der link ist nur auf die landing page der .NET Web Development and Tools Blog.


TL;DR

Was mache ich falsch?

Ich weiß, dass die erste Version .NET Core ist hauptsächlich auf ASP.NET aber wie ich es verstanden habe, ASP.NET Core-apps sind nur Konsole-apps auch, also dachte ich, eine basic-Konsole-app jetzt klappen würde.

Auf der anderen Seite, die meisten der console app "erste Schritte" docs noch fehlen, so ist es vielleicht einfach zu früh und dotnet publish für Konsolen-apps ist noch nicht fertig?

Bearbeiten nach ein paar Tagen: ich bin zu Ahnen, dass mache ich nichts falsch und, dass es ein Problem in the.NET Core command line tools, damit ich gab es das command-line-tools " issue tracker.

InformationsquelleAutor der Frage Christian Specht | 2016-01-03

Schreibe einen Kommentar