C# Verschobene exe funktioniert nicht?

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.

Woher ich das weiß:Hobby – Ich programmiere seit 3 Jahren mit C#

imexyy 
Fragesteller
 19.05.2024, 19:57

kann ich die .dll und .exe auf irgendeine art und weise verbinden damit ich am ende nurnoch eine datei habe?

0
Suiram1  19.05.2024, 20:08
@imexyy

Ja. Hier eine kurz Anleitung:

  1. In VS2022 Rechtsklick auf das Projekt machen und Veröffentlichen... auswählen
  2. Veröffentlichungsprofil hinzufügen auswählen
  3. Ordner auswählen
  4. Nochmal Ordner auswählen
  5. Den Pfad zum speichern auswählen und Fertigstellen anklicken
  6. Schließen anklicken
  7. Auf Alle Einstellungen anzeigen gehen
  8. Bei Zielruntime den Wert win-x64 auswählen
  9. Bei Dateiveröffentlichungsoptionen die Option Einzelne Datei erstellen auswählen.
  10. Auf Speichern gehen
  11. 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.

1
imexyy 
Fragesteller
 19.05.2024, 20:27
@Suiram1

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.

0
Suiram1  19.05.2024, 20:33
@imexyy
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.

0
imexyy 
Fragesteller
 19.05.2024, 20:47
@Suiram1

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.

0
Suiram1  19.05.2024, 20:50
@imexyy

Gibt es die .exe im Internet und wenn ja unter welcher Adresse? Und wenn nicht dann kann man den Inhalt in eine .dll auslagern und die dll in die App reinkompilieren.

0
imexyy 
Fragesteller
 19.05.2024, 21:05
@Suiram1

Genau! Die .dll Datei war auch dabei leider habe ich keine Ahnung davon wie ich diese in Benutzung ziehe.

0
Suiram1  19.05.2024, 21:14
@imexyy

Da muss es aber ein Unterschied beim Aufrufen geben, weil eine dll kein Entry point hat. Ich kann mir das mal anschauen. Hast du die .exe/.dll von einer Internet Seite oder von wo hast du diese?

0