C# Verschobene exe funktioniert nicht?
Hallo,
ich bin neu im ganzen programmier thema und ich bentutze zurzeit visua lstudio 2022 um ein kleines programm zu code. Jetzt bin ich zwar so gut wie fertig jedoch wenn ich die erbaute exe zB auf meinen desktop verschiebe funktioniert diese nicht mehr. Diese Funktion würde ich mir schon gerne wünschen da ich dieses programm gerne an freunde schicken würde.
Vielen Dank im Vorraus
1 Antwort
Wenn du .NET nutzt gehört zur .exe auch immer eine .dll-Datei. Diese dll muss sich immer dort befinden wo auch die .exe ist. Bedenke das die auf den PC auf dehnen du das Programm ausführen möchtest auch die .NET Version installiert sein muss für die es kompiliert wurde.
Eine Ausnahme dabei ist .NET Framework. Dieser ist überall auf Windows vorinstalliert und dort reicht nur die .exe-Datei aus zum ausführen, allerdings sollte man .NET Framework nicht mehr nutzen da dieser out of support ist.
Ja. Hier eine kurz Anleitung:
- In VS2022 Rechtsklick auf das Projekt machen und Veröffentlichen... auswählen
- Veröffentlichungsprofil hinzufügen auswählen
- Ordner auswählen
- Nochmal Ordner auswählen
- Den Pfad zum speichern auswählen und Fertigstellen anklicken
- Schließen anklicken
- Auf Alle Einstellungen anzeigen gehen
- Bei Zielruntime den Wert win-x64 auswählen
- Bei Dateiveröffentlichungsoptionen die Option Einzelne Datei erstellen auswählen.
- Auf Speichern gehen
- Und zuletzt veröffentlichen anklicken.
In dem von dir Angegebenen Pfad wird alles erstellt. Es kann allerdings etwas dauern bis VS2022 fertig ist also gedulde dich etwas.
.NET muss aber trotzdem installiert sein.
Wirklich vielen Dank,
ich möchte auch garnicht weiter stören aber falls es keine weiteren umstände macht hätte ich da noch eine frage.
Ich hatte davor eine .exe in den Code eingeführt (exe war im Projekt Ordner) und da alles geklappt hat dachte ich das dies keine weiteren Probleme darstellen würde. Jetzt hätte ich die Frage ob ich diese irgendwie anderes einbauen könnte falls möglich, da diese jetzt natürlich Probleme macht beim weiteren versenden.
eine .exe in den Code eingeführt
Was meinst du damit? Bezieht sich das auf deine vorherige Frage? Wenn du mit einbauen meinst das du (wie in vorherigen Frage) Funktionen aus der .exe in deiner Anwendung nutzt müsste ich erstmal wissen wie die das jetzt umgesetzt hast. Dafür wäre auch hilfreich zu wissen was die eingebaute .exe macht um es irgendwie zu vereinfachen, da es schon etwas unüblich ist eine Funktionen aus einer .exe von einer anderen .exe aufzurufen. Jedefalls wäre etwas mehr Kontext gut.
ich möchte auch garnicht weiter stören
Du störst nicht. Ich hab eh zu viel Zeit.
Genau, da ich diese Funktion leider nicht selber coden kann und diese viel zu kompliziert und komplex wäre habe ich nur die fertige exe als Lösung gesehen. Ich habe das Problem mit dem folgendem Code davor gelöst:
private void button1_Click(object sender, EventArgs e)
{
try
{
string exePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\Ordner/ZielExe.exe");
if (File.Exists(exePath))
{
Process.Start(new ProcessStartInfo(exePath) { UseShellExecute = true });
}
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
}
Da ja nicht der ganze Projekt Ordner auf jedem Desktop herumliegt kann ich diese Art nicht weiter nutzen.
kann ich die .dll und .exe auf irgendeine art und weise verbinden damit ich am ende nurnoch eine datei habe?