[Xamarin / Visual Studio for Mac] Console Binary lässt sich nur mit ./ starten

Diskutiere das Thema [Xamarin / Visual Studio for Mac] Console Binary lässt sich nur mit ./ starten im Forum Mac OS Entwickler, Programmierer.

  1. stonefred

    stonefred Thread Starter Mitglied

    Beiträge:
    6.166
    Medien:
    4
    Zustimmungen:
    5.186
    Mitglied seit:
    20.11.2007
    Hallo Programmierer,

    ich habe heute zum ersten Mal mit Xamarin gespielt und einen C# code als Consoleapp compiliert und gespeichert. Das Programm liegt in einem Ordner und ist ausführbar, trotzdem kann ich es aus der Konsole nicht in dem Ordner starten, in dem es liegt. Mit ./programmname funktioniert es einwandfrei.

    Code:
    > cd testverzeichnis
    > ls -la testprogramm
    -rwxr-xr-x  1 stonefred  staff  80860 24 Nov 10:15 testprogramm
    > testprogramm
    -bash: testprogramm: command not found
    >./tesptrogramm
    
    Hello World!
    
    >
    Wie kann ich das Binary ohne ./ ausführbar machen?
     
  2. oneOeight

    oneOeight Mitglied

    Beiträge:
    52.479
    Zustimmungen:
    5.850
    Mitglied seit:
    23.11.2004
    es musst sonst im PATH liegen.
    aber ./ steht für das aktuelle verzeichnis.
    sonst du es mit vollem pfad ausführen.
    /pfad/zu/binary.

    wenn das nicht ständig machen willst, dann füge den ordner halt PATH hinzu.
    entweder über /etc/paths oder es noch die /etc/paths.d, da kann man dann pro eintrag eine datei anlegen und benennen, damit man bessere übersicht hat.
    alternativ kannst auch ein alias in shell rc datei machen.
     
  3. xentric

    xentric Mitglied

    Beiträge:
    4.023
    Zustimmungen:
    806
    Mitglied seit:
    11.05.2007
    Keine. Das Programm lässt sich ausführen.

    Es ist also kein C#/Xamarin-Problem, sondern OP braucht noch etwas POSIX/Shell-Verständnis: https://askubuntu.com/a/168584
     
  4. oneOeight

    oneOeight Mitglied

    Beiträge:
    52.479
    Zustimmungen:
    5.850
    Mitglied seit:
    23.11.2004
    hab den post noch geändert ;)
     
  5. stonefred

    stonefred Thread Starter Mitglied

    Beiträge:
    6.166
    Medien:
    4
    Zustimmungen:
    5.186
    Mitglied seit:
    20.11.2007
    Code:
    > pwd
    /Users/stonefred/Desktop/testverzeichnis
    > /Users/stonefred/Desktop/testverzeichnis/testprogramm
    
    Hello World!
    
    >
    das hat funktioniert.

    Hmm, von Linux habe ich die Erfahrung, dass ein Binary wenn es mit chmod +x ausführbar gemacht worden ist kein ./ braucht. Und wenn man mit der Shell im selben Verzeichnis ist, dann braucht man auch keine Path-Variablen oder das Binary in einen bekannten Path ablegen... :confused:
     
  6. oneOeight

    oneOeight Mitglied

    Beiträge:
    52.479
    Zustimmungen:
    5.850
    Mitglied seit:
    23.11.2004
    uh, da hat dann aber jemand . in PATH gemacht, was nicht so beste idee ist.
     
  7. stonefred

    stonefred Thread Starter Mitglied

    Beiträge:
    6.166
    Medien:
    4
    Zustimmungen:
    5.186
    Mitglied seit:
    20.11.2007
    Ist das echt wahr?

    Ich habe übrigens gerade gemerkt, dass ich 3 Dateien habe.
    testrogramm
    testprogramm.dll
    testprogramm.pdb

    wenn ich die 3 Dateien in ein anderes Verzeichnis kopiere, dann funktioniert es auch mit ./ nicht mehr
    Code:
    > cd /Users/stonefred/Desktop/testverzeichnis
    > mkdir test
    > cp testprogramm test/
    > cp testprogramm.dll test/
    > cp testprogramm.pdb test/
    > cd test
    > ./testprogramm
    A fatal error was encountered. The library 'libhostpolicy.dylib' required to execute the application was not found in '/usr/local/share/dotnet'.
    alles nicht so einfach, wie gedacht. :)
     
  8. oneOeight

    oneOeight Mitglied

    Beiträge:
    52.479
    Zustimmungen:
    5.850
    Mitglied seit:
    23.11.2004
    das binary ist halt gegen eine lib gelinkt, die dann nicht gefunden wird.
    musst du halt statisch linken, falls das geht.
     
  9. stonefred

    stonefred Thread Starter Mitglied

    Beiträge:
    6.166
    Medien:
    4
    Zustimmungen:
    5.186
    Mitglied seit:
    20.11.2007
    OK. Vielen Dank.

    Für den ersten Versuch war ich noch relativ erfolgreich. Ich habe mehrere 4 Jahre alte Windows-C#-Klassen auf dem Mac kompiliert, debugged und mit eigener Mainroutine zum Laufen gebracht. Aber insgesamt ist mir das Xamarin immer noch zu sehr eine Bastelei. Das Binary würde ohne das .dotnet Framework also nicht funktionieren... das gefällt mir gar nicht.

    Ich werde mir nochmal XCode ansehen und wenn ich total versage wieder zu meinen Scripten zurückkehren.
     
  10. xentric

    xentric Mitglied

    Beiträge:
    4.023
    Zustimmungen:
    806
    Mitglied seit:
    11.05.2007
    https://natemcmaster.com/blog/2017/12/21/netcore-primitives/#runtimeconfigjson
    https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build


    Siehe 2ter Punkt: https://docs.microsoft.com/en-us/dotnet/core/deploying/index

    Wenn man eines nicht sagen kann, dass MSDN schlechte Dokumentation hat. Wenn wir nur ein Zehntel davon auf der Arbeit hätten, wär ich schon froh, ..
     
  11. stonefred

    stonefred Thread Starter Mitglied

    Beiträge:
    6.166
    Medien:
    4
    Zustimmungen:
    5.186
    Mitglied seit:
    20.11.2007
    In meiner "Projektmappe" ist das scheinbar nicht mehr drin, darum wurde das nicht neu erstellt. Von den Versuchen von gestern Abend gibt es diese Datei testprogramm.runtimeconfig.json, damit funktioniert auch die Kopie in dem Ordner test.

    Danke für Deine Tipps. Mir ist klar, dass ich um Coden zu lernen ein paar Bücher lesen sollte. Grund für meine Exkursion ist, dass ich diese Funktion aus dieser Klasse gebraucht habe, um einen String zu konvertieren. Es gab dafür keine andere Lösung, als das selbst zu kompilieren. :)
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...