Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von BerndFfm
Thema: dynamische Code evaluierung
Am im Forum: Rund um die Programmierung


Es gibt Anwendungen wo eine variable Struktur in json serialisiert wird und dann in einer Datenbank gespeichert wird.

Grüße Bernd

Thema: Zur Laufzeit erstellter Button nach Klick Text ändern
Am im Forum: GUI: Windows-Forms

Mit modalem Dialog geht das ganz kurz :


Button button1 = new Button();
button1.Text = "&Abbrechen";
....Add(button1);

dlgAbfrage dlg = new dlgAbfrage();
dlg.ShowDialog();

button1.Text = "&Schließen";

Wenn der Text vom Dialog abhängig ist :


DialogResult result = dlg.ShowDialog();
//oder
string auswahl = dlg.Auswahl;
if (...)

Das wird in dem Artikel "Kommunikation von 2 Forms" erklärt.

Wenn mehrere Buttons den gleichen Click Events aufrufen:


((Button)sender).Text = "&Schließen";

Grüße Bernd

Thema: Vorstellung Projekt 'Finderwille Einsatz App'
Am im Forum: Smalltalk


Ich glaube es war eine schlechte Idee als erste Mobile App eine App zu wählen die im Hintergrund laufen soll.

Die App läuft auf Android und iOS manchmal stabil über mehrere Stunden im Hintergrund, manchmal bricht sie sofort ab wenn der Bildschirmschoner angeht.

Woran das liegt weiß ich nicht. Hat da jemand eine Idee ?

Weitere Hürden :

"Error archiving ..."
Xamarin Einstellungen Archives auf C:\Archives einstellen. Der Default Pfad ist länger als 255 Zeichen und erzeugt einen Fehler in Windows.

"iOS Lock Down Error. Mux Error."
iPhone neu starten, dann gehts.

"Error deleting /bin/obj/"
Pfad /bin/obj/ manuell löschen, dann gehts.

Ich glaube dass Xamarin Forms noch nicht so gut in Visual Studio integriert ist. Ich hoffe das wird besser mit .NET Maui.

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Die "Hürden" die ich hatte :

Zertifikat und Bereitstellungsprofil im Apple Developer Portal erstellt. Im Visual Studio kann man die runterladen. Leider laufen die dann nicht. Wenn man aus dem VS ein neues Zertifikat erstellt geht es, aber das geht nur 6 Mal nacheinander.

Der Fehler der angezeigt wird heißt "No Keychain".
Das Problem : Der private Schlüssel wird seit VS 16.5 nicht mehr automatisch auf den Windows Rechner übertragen.
Lösung : Zertifikate auf dem Mac runterladen und dort mit privatem Schlüssel speichern (*.p12). Auf dem Windows Rechner im VS importieren und dann geht es.

2. Hürde : Auf Windows Rechner kam immer die Fehlermeldung "Visual Studio Essentials ... erfordert Kennwort". Ich hatte aber keines vergeben.
Lösung : Den Eintrag "Visual Studio Essentials ..." im Schlüsselbund des Mac Rechners löschen.

3. Hürde : Wenn man ein neues Zertifikat oder Profil erstellt bleiben die alten im VS bestehen, obwohl sie im Developer Portal gelöscht sind. So werden 5 Profile angezeigt mit gleichen Namen, aber nur eines ist richtig.
Lösung : Die Zertifikate und Profile werden in Dateien in
C:\Users\..\AppData\Local\Xamarin\iOS\Provisioning\Certificates
und
C:\Users\..\AppData\Local\Xamarin\iOS\Provisioning\Profiles
abgelegt. Die Dateien in diesen Verzeichnissen einfach löschen.

Grüße Bernd

PS.: Alles ohne Gewähr ! Vor allem das Löschen von Sachen !

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

ich habe bisher die automatische Bereitstellung des Visual Studio benutzt um eine App für das iOS zu erzeugen.

Das war aber keine gute Idee weil das VS dann jedes Mal eine neues Zertifikat erstellt und die Zahl von 6 erlaubten Zertifikaten schnell voll ist.

Bei der manuellen Bereitstellung kann man alles selber kontrollieren was benutzt wird.

Vorher muss man aber noch die alten Zertifikate und Profile im Dateisystem löschen weil man sonst eine Liste von 10 gleichen Zertifikaten hat und nicht weiß welches überhaupt noch gültig ist.

Leider bekommt man bei der manuellen Bereitstellung die Fehlermeldung "Not in keychain". Man muss dann noch den privaten Schlüssel vom Mac Rechner auf den Windows Rechner kopieren und importieren. Das ist leider in keiner Doku erwähnt.

Benutzt hier noch jemand VS unter Windows um iOS Apps zu entwickeln ?

Lohnt es sich wenn ich hier Fragen dazu stellen oder auch Lösungen vorstelle ?

Grüße Bernd

Thema: String auf mehrere Zeilen prüfen
Am im Forum: GUI: Windows-Forms

Falls das .NET auf einem System nicht korrekte Werte zurückgibt würde ich die Zeichen nicht in die if Abfrage einbauen sondern eher eine eigene Methode schreiben :


if (Text.Contains(EnvironmentNewLine()))
    ...

public string EnvironmentNewLine()
{
    if (Environment.OS == "IBM Xenix") return "\n";      // nur ein Beispiel
    else return Environment.NewLine;
}


Wenn ich eine Abfrage nur einmal brauche und das dann auch noch so selbstbeschreibend ist speichere ich nicht in einer Zwischenvariablen.

Grüße Bernd

Thema: String auf mehrere Zeilen prüfen
Am im Forum: GUI: Windows-Forms


if (Text.Contains(Environment.NewLine)) ...

Grüße Bernd

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Hallo Tommy,

die Namen der Controls zur Laufzeit zusammensetzen, was Du ursprünglich machen wolltest, ist oft keine gute Lösung. Zum einen kann der Compiler nicht gut optimieren, zum anderen können Laufzeitfehler auftreten die der Compiler nicht beim Übersetzen merken kann.

Die Übertragung der angelegten Controls in ein Array, wie oben von Th69 vorgeschlagen, finde ich auch die beste Lösung : Anlegen der Controls im Designer und trotzdem Zugriff über eine Schleife.

Ich schreibe nochmal wie das aussehen kann :


TextBox[] tb = new TextBox[] { textBox1, textBox2, textBox3 };
CheckBox[] cb = new CheckBox[] { checkBox1, checkBox2, checkBox3 };
for (int i = 0; i < cb.Length; i++) tb[i].Enabled = cb[i].Checked;

Kürzer geht es kaum.

Wenn jemand eine Checkbox wieder auf unchecked setzt soll dann das zugehörige Textfeld wieder disabled werden ? Das fehlt in deinem Code.

Grüße Bernd

Thema: FTPS mit Framework 4.0
Am im Forum: Netzwerktechnologien

WinSCP hat eine DLL die man einfach einbinden kann.

Das kann ALLES !

WinSCP .NET Assembly and COM Library :: WinSCP

Man muss dazu WinSCP nicht installieren, es reicht die WinSCP.exe ins Programmverzeichnis zu kopieren (das steht nicht in der Doku).

Wenn Du die Auswahl hast nimm SFTP und nicht FTP over SSL (FTPS), bei mir lief das viel besser.

Grüße Bernd

Thema: Elemente an Fenstergröße anpassen
Am im Forum: GUI: Windows-Forms


Man kann in Windows Forms die Attribute Dock und Anchor benutzen um Controls automatisch anzupassen.

Wenn das nicht genügt dann musst Du selber rechnen (OnSizeChanged).

Grüße Bernd

Thema: Programm beenden über das Nertzwerk
Am im Forum: Rund um die Programmierung

Hallo Torsten,

jetzt gibt es gleich Schimpfe dass die Exe auf einem Netzwerklaufwerk liegt ;-)

Ich mache das aber genauso und läuft seit vielen Jahren in vielen Firmen gut. Ab Windows 7 wird eine geöffnete Datei von Windows gesperrt, vorher konnte man sie einfach austauschen.

Das Problem habe ich auch dass Leute über VPN oder so das Programm gestartet haben und man es so nicht mit einer neuen Version überschreiben kann.

Ich mache das so : ich kopiere das Programm mehrmals auf das Netzwerklaufwerk und mein Hauptprogramm startet immer das Neueste. So kann ich alle nicht gesperrten ersetzen und mit dem Neustart steht die aktuelle Programmversion zur Verfügung.

Programm beenden könnte man nur wenn parallel ein anderen Programm läuft was es beendet. Was ist aber wenn gerade jemand am Arbeiten ist ?

Grüße Bernd

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Ich glaube ja immer noch dass Dir die Anzahl der angeklickten Checkboxen überhaupt nichts nützt.
Das was Du oben beschrieben hast würde ich so machen :


if (checkbox1.Checked) ExecLine(txtSourceFilePathApp1, txtFileNameApp1, txtExtApp1);
if (checkbox2.Checked) ExecLine(txtSourceFilePathApp2, txtFileNameApp2, txtExtApp2);
if (checkbox3.Checked) ExecLine(txtSourceFilePathApp3, txtFileNameApp3, txtExtApp3);
if (checkbox4.Checked) ExecLine(txtSourceFilePathApp4, txtFileNameApp4, txtExtApp4);
if (checkbox5.Checked) ExecLine(txtSourceFilePathApp5, txtFileNameApp5, txtExtApp5);
if (checkbox6.Checked) ExecLine(txtSourceFilePathApp6, txtFileNameApp6, txtExtApp6);
if (checkbox7.Checked) ExecLine(txtSourceFilePathApp7, txtFileNameApp7, txtExtApp7);
if (checkbox8.Checked) ExecLine(txtSourceFilePathApp8, txtFileNameApp8, txtExtApp8);
if (checkbox9.Checked) ExecLine(txtSourceFilePathApp9, txtFileNameApp9, txtExtApp9);
if (checkbox10.Checked) ExecLine(txtSourceFilePathApp10, txtFileNameApp10, txtExtApp10);

Wenn es unbedingt eine Schleife sein muss :


for (int i = 1; i < 11; i++)
    if (((CheckBox)this.Controls("checkbox1" + i.ToString()).)Checked)
        ExecLine(this.Controls("txtSourceFilePathApp" + i.ToString()), this.Controls("txtFileNameApp1" + i.ToString()), this.Controls("txtExtApp1" + i.ToString()));

oder


for (int i = 1; i < 11; i++) ExecLine(i);

Hier besteht die Gefahr dass wenn ein Controlname falsch geschrieben ist es erst zur Laufzeit einen Fehler gibt.

Ich bin immer für die einfache Lösung.

Grüße Bernd

Thema: Realisieren und Kommunizieren, (d.h. Klassendiagramm) in C# einen CSVReader mit folgender Schnittstelle aus einer CSV Datei Person einlesen und als List<IPerson> zurückgeben.
Am im Forum: Rund um die Programmierung


Ist das für die Luca App ?

Grüße Bernd

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Zitat von Th69
PS: @BerndFfm, dein 2. Code paßt nicht zu der Anforderung.

Ich habe erst nach längerem Studium des Source Codes verstanden dass er die Checked Checkboxes durchgehen will um dann den Namen eines Controls zusammenzubasteln um dann einen Wert zuzuweisen, mit if abgefragt.

Deshalb würde ich die Schleife und das Zusammenbasteln des Control Namens einfach weglassen und nur das if verwenden :

if (cbFileNameApp.Checked) fileName = txtFileNameApp.Text;

oder wenn das benutzt werden soll zum Verschieben von Dateien noch einfacher :

if (cbFileNameApp.Checked) MoveFiles(sourceFilePath, targetPath, praegeCodeNrFolderName);

Grüße Bernd

PS.: ich verstehe aber noch nicht genau was der Code oben genau machen soll. Es wäre gut wenn der Autor mal beschreiben würde was er überhaupt machen will.


Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Ich verstehe auch nicht was da im Code genau gemacht werden soll.

Ich denke das kann man viel eleganter oder einfacher machen.


string sourceFilePath = ""; if (cbSourceFile.Checked) sourceFilePath = txtSourceFilePath.Text;
string fileName = "";       if (cbFileNameApp.Checked) fileName = txtFileNameApp.Text;
...

Das wären 30 Zeilen bei 30 Checkboxen.

Grüße Bernd

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#


Ich würde das mit einem if machen :


CheckBox[] checkboxes = ...;
for (int i = 0; i < checkboxes.Length; i++)
    if (checkboxes[i].Checked)
    {
         ....
    }

Grüße Bernd

Thema: Mehrere AppDomains, Umbenennung der .exe, Assembly wird nicht gefunden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen


Ich muss aus einem anderen Grund auch mehrere exe Dateien erzeugen. Umbenennen kann ich nicht da dann die TextControl Lizenz nicht mehr geht.

Ich kopiere per Programm die SLN-Datei und ersetze in dieser die Namen die brauche. Dann wird halt x Mal übersetzt, aber das stört mich nicht.

Grüße Bernd

Thema: Crystal Report Update
Am im Forum: Rund um die Programmierung

Ich benutze auch noch Crystal Reports und installiere beim Kunden immer neueste Runtime. Das hat schon öfter Probleme gegeben.

Am Ende habe ich mir so beholfen dass ich die DLL's auch in das App Verzeichnis kopiert habe.

Die meisten Reports habe ich inzwischen auf Microsoft Report Builder umgestellt, der ist eh besser zu bedienen und braucht vor allem keine lokale Installation.

Grüße Bernd

Thema: Microsoft Build 2021 startet heute
Am im Forum: Szenenews

Danke für die tolle Übersicht.

Leider ist der Ton teilweise nicht sehr gut, da viele von zuhause senden.

Grüße Bernd

Thema: Methodennamen dynamisch erstellen / ansprechen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mach es doch vor dem Serialisieren :


if (checkBoxVorname.Checked) person.Vorname = textBoxVorname.Text; else person.Vorname = null;
if (checkBoxNachname.Checked) person.Nachname = textBoxNachname.Text; else person.Nachname = null;

1 Zeile pro Feld, geht doch.

Natürlich kannst Du auch die Textboxen in einer Schleife durchgehen und die Checkbox dazu abfragen, aber Du musst es ja eh der Klasse zuweisen.
Finde ich auch nicht so elegant.


foreach(Control ctrl in ..Controls)
{
    string tb = ctrl.Name;
    string cb = ctrl.Name.Replace("textBox","checkBox");
    if (tb.Startswith("textBox")) (CheckBox)Controls[cb] ...
}

Grüße Bernd

Thema: LED Steuerung
Am im Forum: Rund um die Programmierung


Die Informationen müssen dann ja noch vom PC zum Raspberry übertragen werden.

DMX ist natürlich totaler Overkill, aber ist sehr robust und bewährt.

Ist eine serielle Technologie (RS485) : Störsicher und man kann lange Kabel legen.

Ist auch nicht so teuer wie ich dachte, um die 100 Euro die Hardware.

Hier eine Einführung in DMX von meinem Kumpel Mike : https://www.youtube.com/watch?v=1Lza-jJp9-g

Bin gespannt welche Lösung es werden wird.

Grüße Bernd

Thema: LED Steuerung
Am im Forum: Rund um die Programmierung

Man kann ja beide Hardware kaufen und testen, kostet ja nichts.

Mit DMX gibt es auch professionelle Hardware für Lichtsteuerung : https://www.led-studien.de/dmx-led-controller/

Hier gibt es ein C# Framework dafür : redpawfx/quickDMX512

Hier eine fertige Platine für 30 LED's : https://www.xmas-land.de/30-Kanal-DMX-512-Controller-Platine#false

Grüße Bernd

Thema: LED Steuerung
Am im Forum: Rund um die Programmierung


Der Raspi ist da etwas überqualifiziert glaube ich.

Mit einem Arduino geht das auch : https://starthardware.org/blink-start-mit-arduino/

Bei mehreren oder größeren LED's macht man Transistoren dazwischen als Verstärker.

Beim Arduino ist das Ein- und Ausschalten einfacher und die Kommunikation mit dem PC.

Meiner Meinung nach.

Mit einem ESP32 oder ESP8266 geht das auch per WLAN oder Bluetooth.

Grüße Bernd

Thema: LED Steuerung
Am im Forum: Rund um die Programmierung

Wenn Du was selbst bauen willst kannst Du einen Arduino per USB anschließen, den kann man seriell ansteuern. Da gibt es bestimmt fertige Platinen für die Ansteuerung von LED's.

Einen Arduino kann man sehr gut in Visual Studio programmieren in C#.

Ich glaube hier kann man jede LED einzeln ansteuern : https://starthardware.org/viele-leds-mit-arduino-steuern-ws2812/

Das sind mal viele LED's : Amazing 16x16x16 RGB LED cube - Embedds

Grüße Bernd

Thema: Best Practice: Daten von SQL-Table ins DGV bringen
Am im Forum: Datentechnologien


Hallo Ruzbacky,

ich verstehe den Unterschied deiner 2 Möglichkeiten nicht so ganz.

Typisierte DataSets nimmt man nicht mehr.

Am besten lässt Du das Mapping jemand machen, z.B. ein ORM oder Micro ORM.

Den Connectionstring hinlegst Du natürlich so dass er vom Benutzer geändert werden kann.

Schau mal hier : https://download.seven-c.de/files/DatenbankenHowTo.htm

Grüße Bernd

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien


Ist schon lange her dass ich das Oracle Typ Mapping gemacht habe, auf jeden Fall mehr als 12 Jahre.

Damals wurde mir von den Experten das "decimal" als Datentyp für ein logisches Feld genannt.

Der Vorteil des Mappings : Man kann den Typ ganz einfach ändern im Source und sofort auf die neuen Datentypen zugreifen.

Das kommt auch dann vor wenn ein Datenbank Update neue Datenbanktypen bringt die geeigneter sind (MS SQL Datumstyp Date oder Datetime2).

Performance ? Das Mapping oben war ca. 5% langsamer als typisierte DataSets. Ca. 10 Mal schneller als ein damaliges ORM.

Grüße Bernd

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Ich erzeuge meine C# Zugriffsklassen automatisch aus der Datenbank.

Das Mapping ist fest hinterlegt, sind ja nur wenige Datentypen die es gibt.


public int    nr { get { return ad_nr; } set { ad_nr = value; } }
public string    match { get { return ad_match; } set { ad_match = value; } }
public string    anrede { get { return ad_anrede; } set { ad_anrede = value; } }
public string    name1 { get { return ad_name1; } set { ad_name1 = value; } }
public string    name2 { get { return ad_name2; } set { ad_name2 = value; } }
public string    strasse { get { return ad_strasse; } set { ad_strasse = value; } }
public string    hausnr { get { return ad_hausnr; } set { ad_hausnr = value; } }
public bool      kunde { get { return ad_kunde; } set { ad_kunde = value; } }

Das logische Feld ad_kunde ist je nach Datenbanksystem entweder boolean oder sbyte (MySQL) oder decimal (Oracle) :


if (rw["ad_kunde"] is Boolean) kunde = (bool)rw["ad_kunde"]; else if (rw["ad_kunde"] is sbyte) kunde = ((sbyte)rw["ad_kunde"] == 1); else kunde = ((decimal)rw["ad_kunde"] == 1);

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Es funktioniert !

Das Problem war dass beim Ändern von Zertifikat, Apple ID, App ID oder Provisionierungsprofil die alten Werte immer irgendwo stehen bleiben und leider manchmal benutzt werden. Die automatische Bereitstellung in iOS-Bundle-Signierung hört sich gut an, kann man wohl für Beta Versionen per Ad Hoc Distrubution nicht benutzen.

Lösung war das manuelle Löschen der Dateien für Zertifikate und Profile.

Meine Schritte auf dem Windows 10 Rechner :

40. Dateien in C:\Users\??\AppData\Local\Xamarin\iOS\ löschen

41. Apple ID neu hinzufügen, Profile laden

42. Verzeichnis löschen : C:\Net\Android\Finderwille Einsatz App\XamarinForms.LocationService.iOS\obj\iPhone\Release

43. iOS Projekt bereinigen und neu erstellen

44. Extras / iOS / Mit Mac koppeln

45. iOS-Bundle-Signierung
(*) Manuelle Bereitstellung
Signierungsidentität : Apple Distribution: Bernd Quambusch (828G3XCPH9)
Bereitstellungsprofil : Finderwille Ad Hoc Distribution
Benutzerdefinierte Berechtigungen : <Dateiname Löschen>

46. Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
Das iPhone ist am Mac angeschlossen und Bildschirm entsperrt.
Starten ohne Debuggen (Strg + F5)

45. iOS Archivieren

46. Verteilen / Ad Hoc
Manuelle Bereitstellung
Signierungsidentität : Apple Distribution: Bernd Quambusch (828G3XCPH9) (1. Auswahl von 4 Einträgen)
Bereitstellungsprofil : Finderwille Ad Hoc Distribution
[Speichern unter]

47. [Ordner öffnen]
C:\Archives *.ipa auf Website hochladen und Info.plist Datei erstellen.

Nun kann ich die App von der Website per Klick installieren : https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/

48. App per xcode vom iPhone löschen und von der Website neu installieren.

Die Entwicklung von mobilen Apps in xamarin.forms gefällt mir gut, eine tolle Sache ! Wird nicht meine letzte App bleiben.

Allerdings ist die Integration noch nicht perfekt, es hakt an vielen Stellen.

Beispiele :

- Date Picker geht nicht im Dark Mode

- Beim Löschen von Zertifikaten, Apple ID, App ID oder Provisionierungsprofil müssen die Dateien dazu manuell gelöscht werden

- Man kann die Developer ID im Visual Studio auf dem Mac nicht editieren oder löschen

- /bin/release Verzeichnis auf Windows Rechner muss man vor dem Build manuell löschen

- Der Windows Rechner verliert immer die Verbindung zum Mac, muss man immer manuell neu verbinden

- Android : In der Standard Installation gibt es immer den Fehler "Copy of the mdbs files failed". Man muss die Pfadeinstellungen für Archive ändern und kürzere Pfade eintragen.
Es kommt öfter vor dass bei Xamarin die Pfade länger als 256 Zeichen werden und Windows damit nicht zurecht kommt.
Siehe https://github.com/xamarin/xamarin-android/issues/5584

- Die kostenlose Bereitstellung besser ignorieren und überhaupt nicht damit anfangen, auch wenn es anfangs verlockend klingt.

- Für die Bereitstellung am besten 2 iOS Devices benutzen, eines zum Erstellen des Projektes und eines zum Testen der Installation.

Zu meiner ursprünglichen Frage : Man kann die App mit Openssl.exe oder xcode tools auch per Script signieren und packen, da muss man sich aber besser auskennen. Das mache ich vielleicht später mal.

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Es gibt anscheinend Möglichkeiten mit den Xcode Tools zu signieren. Leider bekomme ich es noch nicht mal in der IDE hin.

Bisher habe ich es genau einmal hinbekommen dass eine App rausgekommen ist die man installieren konnte. Und die lief genau einen Tag, dann ließ sich die App nicht mehr starten.

Jetzt schreibe ich jeden Schritt genau auf, damit ich es reproduzieren kann.

Folgende Schritte mache ich um eine App fürs iPhone zu erzeugen :

Auf dem Windows 10 Rechner :

0. Alle Zertifikate / Profile löschen

1. Extras / iOS / Mit Mac koppeln

2. Clean / Rebuild / Deploy Project

3. Release iPhone XamarinForms.LocationService.iOS Remotegerät (falls Natascha's iPhone 6s nicht vorhanden)
Starten ohne Debuggen (Strg + F5)

4. Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
Starten ohne Debuggen (Strg + F5)

5. Eigenschaften XamarinForms.LocationService.iOS
iOS-Bundle-Signierung
Schema : (*) Automatische Bereitstellung
Team : Bernd Quambusch - Individual - 828G3XCPH99 ([email protected])

5a. Apple Konto entfernen / hinzufügen

5b. Eigenschaften XamarinForms.LocationService.iOS
iOS-Bunde-Signierung
Schema : (*) Manuelle Bereitstellung
Signierungsidentität :
Team : Bernd Quambusch - Individual - 828G3XCPH99 ([email protected])

6. Projektmappe XamarinForms.LocationService.iOS
Archivieren

7. [Verteilen] [Ad-hoc]

8. Extras / iOS / Mit Mac koppeln

8a. Extras / Optionen / Xamarin / iOS-Einstellungen
Speicherort für Archive : C:\Archive (Sonst kommt Fehler MDB Files ...)
Enable Hot Restart = Nein

9. Archiv-App signiert mit : B4120F70629EC3....
Manuelle Bereitstellung
Signierungsidentität : Bernd Quambusch (2. Eintrag)
Bereitstellungsprofil : Finderwille Einsatz App Distribution
Speichern unter : C:\Users\bq\AppData\Local\Xamarin\iOS\Archives
XamarinForms.LocationService.ipa [Speichern]

10. [Ordner öffnen]
C:\Users\bq\AppData\Local\Xamarin\iOS\Archives
XamarinForms.LocationService.ipa hochladen


Auf dem Mac
========

20. Visual Studio starten

21. iOS als Startprojekt festlegen

22. Release | iPhone : Generisches Gerät

23. iOS Einstellungen : iOS-Bündelsignierung / Signierungsidentität Verteilung: Bernd Quambusch (828G3XCPH9)
Bereitstellungsprofil : Ad-hoc (automatisch)

24. Erstellen : Projektmappe bereinigen / neu erstellen

25. iOS : Für Veröffentlichung archivieren

26. Signieren und verteilen / Ad Hoc

27. Apple Developer Portal :
Profiles : Generate
(*) iOS
(*) Ad Hoc
App ID : Visual Studio Wildcard
Certificate : Bernd Quambusch (Distribution)
[x] Select All Devices
Name : Finderwille Ad Hoc Distribution
[Generate]

28. Bereitstellungsprofil ( ) Vorhandene Identität und vorhandenes Bereitstellungsprofil verwenden
59B87C2...
(*) Mit anderer Identität und anderen Bereitstellungsprofil erneut signieren
Signierungsidentität : Distribution: Bernd Quambusch (828G3XCPH9)
App : ...iOS.app
Bereitstellungsprofil : Finderwille EInsatz App Distribution
[Veröffentlichen]
[Ersetzen]

Die erzeugte IPA Datei funktioniert leider nicht.

Auf dem iPhone : " 'Finderwille Einsatz App' kann nicht installiert werden. Versuche es später noch einmal."

Auf der System Konsole des iPhones steht nur : "This app could not be installed at this time" "Invalid Status Code 484" "Error Domain ... Code 1404"

Weitere Fehlermeldungen gibt es nicht.

Da muss ich mal weiter probieren ...

Oder hat da jemand eine idee ?

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT


ich habe jetzt einen kostenpflichtigen Account bei Apple Developer und habe es nun geschafft eine Beta Version Online zu stellen (Adhoc Deployment).

Der kostenlose Account kann nicht viel und man macht mehr kaputt damit. Ich musste viele Umwege gehen bis App ID, Bundle ID, Certificate, Provisioning Profile und Signature funktioniert haben. Am Ende musste ich alle löschen und neu vom VS erstellen lassen.

XCode ist sehr wackelig und ich habe nun alles auf dem Windows Rechner gemacht. Der Mac muss eingeschaltet sein und ein iPhone muss angeschlossen sein. Zum Glück bekomme ich ein altes iPhone geschenkt. Das Windows Visual Studio läuft gut mit dem Mac zusammen und holt sich alle notwendigen Dokumente von der Apple Developer Seite. Und legt alles an was man braucht !

Hier ist das Ergebnis : Die Finderwille Einsatz App Betaversion | Finderwille Frankfurt/Main

Bitte nicht installieren, ich brauche zuerst die iPhone Seriennummer (UDID), sie muss in das Package eingetragen werden.

Grüße Bernd