Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

WPF OnceClick Anwendung mit inkludiertem .NET Core zu gross?
habib
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

WPF OnceClick Anwendung mit inkludiertem .NET Core zu gross?

beantworten | zitieren | melden

Rein aus Testzwecken habe ich nur eine kleine GUI unter WPF mit NetCore3.1 entwickelt. Bisher noch keine Logik eingebaut, nur rein das GUI.

Das Ganze habe ich als OnceClick veröffentlicht und bekam auch eine 181 Kb Datei heraus. Auf meinem System lief sie problemlos, allerdings auf einem frisch installierten Windows (da wo die Anwendung genutzt werden soll) bekam ich die Meldung das NetCore installiert sein muss.

Also das ganze nochmals neu kompiliert und unter Bereitstellungsmodus: Eigenständig angegeben. Damit ging es dann auch auf dem frischen Windows. Aber nun ist die Datei 180 MB groß. Dies finde ich ein bisschen arg groß. Wo mache ich einen Fehler, wo denke ich vlt. falsch? Oder wo hab ich vlt. einen Haken vergessen?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

Siehe Dokumentation zu "Self Contained" aka Eigenständig.

Damit packst Du die gesamte Runtime mit in Dein Applikationsdeployment; und ja, dann sind das eben 180 MB.
Der Vorteil ist, dass Du damit eben die Runtime selbst in der Hand hast (ich bin ein großer Fan davon) und auf dem Zielsystem kein .NET Core als Runtime installiert sein muss; der Nachteil ist eben, dass es größer wird.

Abhilfe hilft Trimming, das es auf Assembly- und auf Methoden-Ebene gibt (letzteres erst mit .NET 5 und ist aktuell nicht production-ready).
Damit werden Assemblies oder eben Assembly-Inhalte entfernt, die Deine Anwendung nicht braucht und das gesamte Deployment entsprechend kleiner.

Aber wie gesagt; alles sehr gut dokumentiert.
.NET Core App Deployment
App Trimming in .NET 5
private Nachricht | Beiträge des Benutzers
habib
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

Den ersten Link hatte ich schon gefunden, trotzdem danke.

Aber gerade wenn ich nur ein kleines Tool haben möchte dann finde ich 180 MB ein bisschen arg viel.

Gerade kam mir ein Einfall und ich habe das ganze nochmals mit .Net Framework 4.7... neu geschrieben und das ganze als *.exe aus dem Debug Ordner geholt. Diese ist nun nur 81 KB groß und läuft auf dem frisch installierten Windows.
Wäre dies auch ein Weg?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

.NET Framework ist abgekündigt und erfordert genauso wie .NET Core die Runtime auf Windows.
Ohne Runtime auf dem Zielsystem kommst Du nicht an Dein Ziel mit .NET.

Dann musst halt die Runtime als Voraussetzung stellen, dann musst sie nicht mitliefern.
private Nachricht | Beiträge des Benutzers
habib
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
.NET Framework ist angekündigt und erfordert genauso wie .NET Core die Runtime auf Windows.

Verstehe ich nicht, was meinst du damit?

Habe jetzt gelesen das die .Net Runtime 4.8... Standardmäßig mit installiert wird bei Windows 10. Also kann ich dies als vorausgesetzt ansehen. Außer das ich die neuen Dinge von .Net Core nicht nutzen kann, dürfte es doch keine Probleme geben?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

4.8 ist die letzte Version von .NET Framework; danach kommt nichts mehr.
.NET Core 5 (vollständiger Name wird dann nur .NET 5) ist die Zukunft.

Standardmäßig bei Windows 10 ist 4.6.1.
Erst mit Update 1709 ist es Version 4.8.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4001

beantworten | zitieren | melden

Zitat von Abt
.NET Framework ist angekündigt ...
Du meintest wohl "abgekündigt"?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

Oh. Korrigiert. Danke.
private Nachricht | Beiträge des Benutzers
habib
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

Habe das ganze nochmal als Release veröffentlicht und erneut 180 MB erhalten.
Irgendwie will das ganze nicht in meinen Kopf warum eine einfach GUI Anwendung, die noch nichts macht, so groß wird. Ok, verstanden habe ich das sie die gesamte Runtime mit innehat und somit so groß wird.

Ein Kollege von mir hat ein Tool in Delphi geschrieben und das ist gerade einmal 4 MB groß. Als Vergleich habe ich nur mal die GUI nachgebaut und komme allein da schon auf 120 MB? Und ich habe auf meinem System kein Delphi installiert, daher muss da ja auch alles mitkommen. Kann mir das bitte jemand erklären?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

Nochmal: da ist nicht nur Deine Anwendung drin - sondern die gesamte Runtime.
Dein Kollege hat nicht die Runtime im Deployment - aber Du.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4001

beantworten | zitieren | melden

Die Standard UI-Controls von Delphi (VCL) basieren auf den Windows Controls (WinAPI), d.h. diese sind schon im Windows Kernel enthalten (User32.dll, comctl32.dll, ...), während WPF eine komplette Neuprogrammierung auf Basis von DirectX ist (während Windows Forms (WinForms) ebenfalls auf den Standard UI-Controls der WinAPI basiert).

Und wie Abt gerade schrieb, ist die Runtime viel mehr als nur die UI.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 226

beantworten | zitieren | melden

Zitat von habib
Ein Kollege von mir hat ein Tool in Delphi geschrieben und das ist gerade einmal 4 MB groß. Als Vergleich habe ich nur mal die GUI nachgebaut und komme allein da schon auf 120 MB? Und ich habe auf meinem System kein Delphi installiert, daher muss da ja auch alles mitkommen. Kann mir das bitte jemand erklären?

Absolute .NET Grundlagen, kannst ja auch Programme in Assembler schreiben, dann sind sie noch kleiner.
private Nachricht | Beiträge des Benutzers
habib
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

Ok, das habe ich nun auch verstanden.

Das hieße also, bei kleinen Tools (so wie mein Kollege eins geschrieben hat) komme ich besser (kleinere Dateigröße) wenn ich WinForms verwende? Oder sehe ich das jetzt falsch?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15690
Herkunft: BW

beantworten | zitieren | melden

Normalerweise evaluiert man eine UI-Technologie nicht nur nach der Endgröße der Applikation.
Das ist ein völlig falscher Ansatz.

Wenn es Dir nur nach der Endgröße der Applikation geht, dann würde .NET in der ersten Runde aus der Evaluierung fliegen und stattdessen auf Programmiersprachen setzen, die sich am Ende statisch kompilieren lassen.

Man entscheidet zwischen WinForms und WPF anhand deren spezifischen Vor- und Nachteile.
Wenns Dir nur um die Größe geht, dann bist Du mit .NET falsch.
private Nachricht | Beiträge des Benutzers