12 MB ist keine "Riesengroße EXE Datei" - daher habe ich den Titel in was sinnvolles umbenannt.
Kurz zu den Basics: die Größe einer Exe-Datei hat keinerlei Aussagekraft, wenn man das Setup nicht kennt.
Es gibt gewisse Parameter, die dafür sorgen, dass eine Exe größer wird; einfaches Beispiel: man kann Runtime-Optimierungen in den Build verlagern. Das sorgt dafür, dass die Anwendung schneller startet, dafür aber größer ist; irgendwo müssen die Optimierungen abgelegt werden.
Genauso kann man beim Kompiliervorgang gewisser Runtimes bestimmen, dass zB ein Teil der .NET Runtime in die Exe eingebettet wird, sodass man unabhängiger vom PC/Server/Whatever ist.
Nur weil also die Exe von App A kleiner ist als B hat das genau 0 Aussagekraft. Man kann auch keine nativ entwickelten Apps (C) mit Apps vergleichen, die auf einer Managed Runtime basieren (Java, .NET...), weil das völlig verschiedene Ausgangssituationen sind.
Die maximale Größe eine Exe-Datei unter Windows kann aktuell 4 GB betragen.
Die aktuelle Trim-Size einer .NET Console App als Single File Build beträgt ca. 10 MB.
Trimming options - .NET
Create a single file for application deployment - .NET
Das ist für eine Runtime, wie sie .NET ist, vergleichweise klein.
Bei der Doku des Assemblies Aufbaus von .NET wird das auch klar:
>
.NET assembly file format
>
PE Format - Win32 apps
Das kann also niemals mit etwas verglichen werden, das 200 K hat.
Zitat |
Mein vorheriges Projekt war ein sehr mächtiges Tool mit sehr vielen Features und schlappen 40.000 Zeilen mehr Code. Die Exe - Datei von diesem Projekt ist schlanke 435 K groß.
|
Und das ist mit Sicherheit keine .NET Anwendung oder vergleichbar (Java..). Selbst für eine native Anwendung unter C ist das relativ klein.
Auch Anzahl von Code-Zeilen hat hier genau 0 Aussagekraft. Steht in 0 Verhältnis zur End-Größe einer erstellten Exe.
Das Forum hier ist ein Hobby-Projekt, viele NuGet Pakete und trotzdem weit über 75.000 Zeilen Code:
Calculate code metrics - Visual Studio (Windows)
- Lines of Code hängt enorm von der Sprache, dem Programmierstil und den Guides ab; in C# kann ich eine Klasse mit einer Zeile Code erstellen, oder aber auch mit unendlich vielen Zeilen (Stichwort Records).
- Lines of Executable Code ist Abhängig vom eingesetzten Compiler