C# Console App Dateien in eine einzelne exe Datei Kompilieren?
Hi. Ich habe mir einen Trainer für ein Spiel erstellt welches ich seit einer weile wieder öfters spiele. (Es geht um ein reines SP Game welches keinen Online Modus oder ähnliches beinhaltet)
Der Trainer funktioniert auch einwandfrei, allerdings habe ich nun das "Problem" das der Trainer scheinbar von vielen Dateien abhängig ist. Wenn diese nämlich nicht im selben Ordner sind wie die .exe Datei startet der Trainer erst gar nicht.
Ich benutze Visual Studio 2022 und das ist auch mein erster richtiger Trainer.
Ich habe mich natürlich vorher schon etwas umgeschaut, allerdings konnte ich zu C# Console Apps nichts finden. Lediglich für C++ habe ich gesehen das es scheinbar eine in Visual Studio eingebaute Compile Funktion gibt.
Wenn mir da jemand helfen könnte würde ich mich sehr freuen :)
1 Antwort
Build -> Publish... -> Folder
Dann bei "Show all settings" unter "File publish options" den Haken bei "Produce single file" rein machen.
so sollten nur noch native DLLs und die debug symbols (.pdb) im output order übrig bleiben
Die debug symbols kannst du entweder einfach löschen oder bei deinem Projekt properties unter "Build" bei "Debug Symbols" durch Wählen von "No files are emitted" oder "Embedded in DLL/EXE" los werden
man kann sicherlich auch irgendwie die nativen DLLs in die exe mit einbetten aber da musst du selber mal recherchieren.
wenn du die ganzen einstellungen vorgenommen hast musst du das ganze nur noch publishen.
man kann sicherlich auch irgendwie die nativen DLLs in die exe mit einbetten
Kommt drauf an
Wenn es eigene native DLLs sind, kann man sie einfach als embedded Resource mit bringen und beim Start unter Temp entpacken und nutzen. Ist auch kein Hexenwerk, muss man aber selber programmieren.
Wenn die nativen DLLs durch eine Abhängigkeit kommen, hängt das von der Abhängigkeit ab. Da diese DLLs aber meistens erst gesucht und genutzt werden, wenn entsprechender Code aufgerufen wird, würde es auch hier reichen, sie als embedded Resource mit zu bringen und unter Temp zu entpacken. Kann aber sein, dass man dafür den Build-Prozess etwas anpassen muss.
Wenn man die Publish-Option self-contained nutzt, dann liegen noch die von der Runtime benötigten Dateien daneben und die kriegst Du nicht weg.
Die pdb datei die noch mit generiert wird kann ich doch auch einfach im Ordner lassen oder löschen oder nicht?
Die sind nur für Debugging und generelle Fehlersuche relevant, brauchst Du also nicht.
Aber wenn jemand einen Fehler meldet und dir nur den Exception-Text gibt, dann bist Du froh, wenn die PDBs dabei waren ;)
Ich persönlich würde sie immer mit dabei lassen - tut nicht weh und Du bist froh, wenn Du sie brauchst.
Und was genau macht "Enable ReadyToRun compilation"
Das nimmt dem JIT-Compiler Arbeit ab, indem es den IL-Code voraus kompiliert - zumindest teilweise. Macht den Start etwas schneller, kann aber zur Laufzeit etwas Performance kosten und natürlich gibt es noch mehr Nachteile.
Solange Du das nicht brauchst, lass es aus.
https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run
Danke hat geklappt. Die pdb datei die noch mit generiert wird kann ich doch auch einfach im Ordner lassen oder löschen oder nicht? Und was genau macht "Enable ReadyToRun compilation"?