Bei einem Konsolenanwendungsprojekt, das auf .NET Core 1.0 abzielt, kann ich nicht herausfinden, wie eine EXE-Datei während der Erstellung ausgegeben wird. Das Projekt läuft gut im Debug.
Ich habe versucht, das Projekt zu veröffentlichen, aber das funktioniert auch nicht. Es ist sinnvoll, da eine EXE-Datei plattformspezifisch wäre, aber es muss einen Weg geben. Meine Suche ergab nur Verweise auf ältere .NET Core-Versionen, die project.json verwendeten.
Wann immer ich baue oder veröffentliche, ist dies alles, was ich bekomme:
dotnet <path>.dll
ich sagte (ich habedotnet run <path>.dll
aus offensichtlichen Gründen nicht ohne Erfolg gedacht und getippt )! (Nachdenklich wäre es gut, wenn dies zugunsten der anderen Frage geschlossen würde, die ähnliche Antworten hat)Antworten:
Zum Debuggen können Sie die DLL-Datei verwenden. Sie können es mit ausführen
dotnet ConsoleApp2.dll
. Wenn Sie eine EXE-Datei generieren möchten, müssen Sie eine eigenständige Anwendung generieren.Um eine eigenständige Anwendung (EXE in Windows) zu generieren, müssen Sie die Ziellaufzeit angeben (die für das Betriebssystem, auf das Sie abzielen, spezifisch ist).
Nur Pre-.NET Core 2.0 : Fügen Sie zunächst die Laufzeitkennung der Ziellaufzeiten in die .csproj-Datei ein ( Liste der unterstützten RIDs ):
Der obige Schritt ist ab .NET Core 2.0 nicht mehr erforderlich .
Stellen Sie dann die gewünschte Laufzeit ein, wenn Sie Ihre Anwendung veröffentlichen:
quelle
RuntimeIdentifier
im csproj einstellen.UPDATE (31. Oktober 2019)
Für alle, die dies über eine GUI tun möchten und:
Hinweis
Beachten Sie die große Dateigröße für eine so kleine Anwendung
Sie können die Eigenschaft "PublishTrimmed" hinzufügen. Die Anwendung enthält nur Komponenten, die von der Anwendung verwendet werden. Achtung : Tun Sie dies nicht, wenn Sie Reflexion verwenden
Erneut veröffentlichen
Vorherigen Post
Für alle, die Visual Studio verwenden und dies über die GUI tun möchten, gehen Sie wie folgt vor:
quelle
Das Folgende erzeugt im Ausgabeverzeichnis:
Es enthält jedoch nicht alle .NET Core-Laufzeitassemblys.
Ich habe es hier in ein Beispiel eingepackt: https://github.com/SimonCropp/NetCoreConsole
quelle
Wenn eine .bat-Datei akzeptabel ist, können Sie eine bat-Datei mit demselben Namen wie die DLL-Datei erstellen (und im selben Ordner ablegen) und dann den folgenden Inhalt einfügen:
Dies setzt natürlich voraus, dass auf dem Computer .NET Core installiert und global verfügbar ist.
(Diese Antwort stammt aus Chets Kommentar .)
quelle
Hier ist meine hackige Problemumgehung: Generieren Sie eine Konsolenanwendung (.NET Framework), die ihren eigenen Namen und ihre eigenen Argumente liest und dann aufruft
dotnet [nameOfExe].dll [args]
.Dies setzt natürlich voraus, dass .NET auf dem Zielcomputer installiert ist.
Hier ist der Code. Fühlen Sie sich frei zu kopieren!
quelle
dotnet [nameOfExe].dll %*