Montag, 5. Februar 2024

Problem bei der Entwicklung mit MS Office Interop


So ganz habe ich nicht verstanden warum das Hinzufügen des Nuget Paket Microsift.Office.Interop.Word (andere Office Interop Pakete) nicht ausreicht. Nach dem ich das Paket hinzugefügt habe und versucht habe nur die Application zu instanziieren, bekam ich einen Ausnahmefehler.

 

Verwendete Umgebung

  • Windows 11
  • Visual Studio 2022
  • Office365 Installation

 

Nur zum laufen bringen

Die Consolen Anwendung soll eine Instanz von Word starten.

 

Die Variante, die nicht geht

Zur Vollständigkeit, wie ich zu dem Ausnahmefehler kam, bei der Verwendung des NuGet Pakets.

 


Und zum Testen ein kurzer Code Schnipsel, der eigentlich ausführbar sein sollte.

 using Microsoft.Office.Interop.Word;  
 Console.WriteLine("Start office application! Solution 1");  
 var app = new Application  
 {  
   Visible = true  
 };  
 Console.WriteLine("Office application started!");  
 Console.WriteLine("Press any key to close the application!");  
 Console.ReadLine();  
 // close the application  
 app.Quit();  

Die Assembly Datei konnte nicht gefunden werden, aber ich konnte nicht erkennen woran das lag. Die zu verwendete Assembly landet nach dem Kompilieren ebenfalls im selben Ordner.

 System.IO.FileNotFoundException  
  HResult=0x80070002  
  Message=Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. Das System kann die angegebene Datei nicht finden.  
  Source=<Cannot evaluate the exception source>  
  StackTrace:  
 <Cannot evaluate the exception stack trace>  

 

Alternative Lösung

Statt das NuGet Packet zu verwenden, wird bereits auf eine installierte Bibliothek zugegriffen.



Kompiliert und gestartet wird wieder mit dem selben Code Schnipsel.

 using Microsoft.Office.Interop.Word;  
 Console.WriteLine("Start office application! Solution 2");  
 var app = new Application  
 {  
   Visible = true  
 };  
 Console.WriteLine("Office application started!");  
 Console.WriteLine("Press any key to close the application!");  
 Console.ReadLine();  
 // close the application  
 app.Quit();  

Wird die Anwendung ausgeführt, sollte sich die Word Anwendung ohne Seite starten.

 


Drück mit der Consolen Anwendung eine Taste, wird der Schließen Befehl ausgeführt und die Word Anwendung sollte sich dann schließen.

 

Warum geht das (nicht)?

Das habe ich mich auch gefragt und wird zunächst ein offener Punkt bleiben.

Die Installierte Assembly zu verwenden ist klar, dass muss funktionieren. Hat bereits vor 10 Jahren so funktioniert und geht auch heute noch.

Aber wenn man die Office Assembly per NuGet Paket einbinden kann, sollte dies auch gehen. Die Beschreibung von Microsoft (Link) beschreibt bzw. gibt einen Hinweis, dass die Implementierung abweichen kann von der Beschreibung. Dennoch frage ich mich, wo meine Consolen Anwendung schaut, wenn versucht wird das NuGet Paket zu verwenden.

 

Es geht doch (noch)

Im letzten Absatz habe ich mir die Frage schon fast beantwortet. Wenn man nicht gerade auf der aktuellsten .NET unterwegs ist, funktioniert die Beschreibung von Microsoft genau so wie beschrieben. Wenn das Projekt mit .NET Framework 4.8 eingestellt ist, also bevor die .NET Welt aufgeräumt wurde, dann funktioniert dies auch. Code ist praktisch das selbe, nur halt ohne TOP Level Statement.


Samstag, 27. Januar 2024

.NET MAUI - Problem beim Einbinden einer Resource aus andere Assembly


Eigentlich war der Fehler sehr dämlich von mir, aber ich bin wegen der mir unbekannten Fehlermeldung nicht auf das gekommen, was eigentlich die Ursache war. Nachdem ich den Fehler Verstand, dachte ich, ich schreibe das mal auf als Blogeintrag. Aber andererseits habe ich auch zu dem Thema im Internet nichts gefunden.

 

Benötigt

  • Visual Studio 2022
  • Mindestens .NET 7
  • .NET MAUI Application
  • .NET MAUI Library

 

Was ist das Ziel?

Die Styles für die Steuerelemente, sollen über eine andere Assembly geliefert werden. Damit dies funktioniert, muss in der Application die Resource in der App.xaml eingetragen werden. Für das Beispiel ist in der Assembly eine Resource abgelegt mit einem Color Style, welches mit einem Key Wert gesetzt ist. In der Application soll dann der Style mit StaticResource einsetzbar sein.

 

Umfeld für Style aufbauen

In der Resource ist ein Style zu einem Color angelegt. Hier nehme ich eine Sache vorweg, hier fehlt die Klasse und komme im späteren Schritt wieder darauf zurück.

 

Damit meine Application darauf zugreifen kann, muss die Assembly in die Abhängigkeiten hinzugefügt werden.

Rechte Maustaste auf Dependencies und im Kontext Menü 'Add Project Reference'


Dann aus der Projektübersicht der Solution, die zu verwendende Bibliothek auswählen.


In der Anwendung muss in die Datei App.xaml die Reference händisch eingetragen werden. Automatische Vervollständigung funktioniert an der Stelle nur zum Teil.


Nun der Merge, um hier die Styles einzubinden. Das Unterstreichen zeigt uns an der Stelle ein Problem.


Am Anfang habe ich bereits erwähnt, dass in der Datei CodexzierTheme.xaml die Klasse fehlt.


Also bringen wie die Klasse noch ein.


Der Fehler in der Anwendung aus der Datei App.xaml ist nun weg.


Auf der MainPage.xaml, habe ich ein Rechteck, welches als Hintergrundfarbe den Style aus der Assembly bekommt. Leider lässt sich das nicht über die Autovervollständigung nicht eintragen.

 

Bis hier her, sieht die Sache in Ordnung aus, mit Ausnahme, dass die Ressource hier nicht gefunden wird über IntelliSense. Ich starte die Anwendung mit F5 und direkt nach dem Start erhalte ich bereits meinen Fehler, den ich bereits als Titelbild gewählt habe.

 

Was fehlt?

Eigentlich sollte klar sein, dass hier die Klasse selbst für die Resource fehlt. In WPF, Silverlight, UWP und XAML musste die Klasse nicht mit eingebunden werden. Bei Xamarin habe ich keine Erfahrungswerte.

 

Per Copy und Paste, habe ich meine ResourceDictionary Datei und nur Namentlich angepasst. Was ich zu diesen Punkt nicht wusste, dass im .NET MAUI zur ResourceDictionary ebenfalls eine Partial Klasse zugeordnet wird.

Nach dem ich zum testen eine ResourceDictionary aus dem .NET MAUI-Templates hinzugefügt habe, war schon gleich der unterschied zu sehen.


Nachdem ich dies so übernahm, ging auch der Aufruf über IntelliSense …


… und die Anwendung ließ sich dann starten mit der gewünschten Farbe aus dem Style.

 

Schlusswort

Wenn das auf der Microsoft Seite so steht, dann funktioniert das auch in der Regel. Das wäre mir auch neu gewesen, wenn eine Beschreibung nicht dem entspricht. Aber meine Erfahrung hat mich an der Stelle in die irre geführt. Die Suche über das Internet ergab ähnliche Ergebnisse, aber keines wies darauf, welche Abhängigkeiten im Umfeld notwendig sein sollten, damit das Einbinden von Resourcen aus einer anderen Assembly funktioniert.


Links

Resource dictionaries - .NET MAUI | Microsoft Learn

Dienstag, 12. Dezember 2023

Ostersonntag und Ostermontag berechnen


Eine Aufgabe auf der Arbeit brachte mich dazu, daran zu denken, dass Offizielle Feiertage ja berechnet werden könnte. Somit kam ich auf einen Blog, welches die Feiertage mit SQL Sripts löste. Leider schien dies nicht ganz klar zu sein, für welche Datenbank. Ist jedoch nichts, was mich aufhält und nahm die Wikipedia Beschreibung über Gausche Osterformel (Wiki).

Verwunderlich ist, dass meine Suche im Internet keine Ergebnisse erbrachte für MS SQL. Manchmal glaube ich, dass mir die Suche absichtlich keine oder kaum brauchbare Ergebnisse zeigt.

 

Benötigt

Rider oder Visual Studio für C#

 

Wann ist Ostern für das Jahr

Mit Eingabe des Jahr, soll mir der Ostersonntag und Ostermontag berechnet werden.

 

Gaußsche Osterformel

Seien wir doch ehrlich, wie ist man auf so eine Formel nur gekommen. Bis letzte Woche dachte ich, dass wird irgendwie entschieden und fertig. Aber weit gefehlt. Im Gegensatz zu anderen Feiertagen, ist dieser immer an einem Sonntag und Montag. Oder schon mal was vom Osterdienstag gehört. Die anderen Feiertage sind an ihrem festen Datum platziert.

 

Folgender Code ermöglicht die Eingabe und Ausgabe einer C# Consolen Anwendung. Für die Berechnung werden nur Ganzzahlen verwendet und die Funktion Modulo.

 Console.WriteLine("Calculate Ostern");  
 Console.WriteLine("Enter year:");  
 var year = int.Parse(Console.ReadLine());  
 var a = year % 19; // Zyklus  
 var b = year % 4;  // Schaltjahr  
 var c = year % 7;    
 var k = year / 100;   
 var p = (8 * k + 13) / 25;   
 var q = k / 4;   
 var m = (15 + k - p - q) % 30; // Korrektur Sonntag und Montag gleichung  
 var n = (4 + k - q) % 7;    // Korrektur Sonnengleichung  
 var d = (19 * a + m) % 30;   // Mondentfernung  
 var e = (2 * b + 4 * c + 6 * d + n) % 7;  
 var day = 22 + d + e;  
 var ostersonntag = (new DateTime(year, 3, 1)).AddDays(day - 1);  
 var ostermontag = ostersonntag.AddDays(1);  
 Console.WriteLine($"Ostersonntag: {ostersonntag:dd.MM.yyyy}");  
 Console.WriteLine($"Ostermontag: {ostermontag:dd.MM.yyyy}");  
 Console.WriteLine("Press any key to exit"); 

 

Ausnahmen

Wie in jeder Sache kommen auch Ausnahmen vor, die selbst der Algorithmus nicht hergibt. An der Stelle kann ich kann ich nur auf die Wiki Seite oder einer anderen Lektüre verweisen.

Montag, 4. Dezember 2023

Arduino Nano ESP32 Mini Beispiel - Onboard RGB LED Fade in und out


Im November habe ich den aktuellen Arduino Nano ESP32 gekauft und habe damit einiges vor. Aber bevor ich den Arduino Nano ESP32 fest verbaue, probiere ich ein paar kleine Aufgaben für den Dezember.

 

Benötigt

  • Arduino Nano ESP32
  • Aktueller Arduino IDE ab Version 2.0

 

Die Aufgabe ist sehr einfach und ist praktisch das Hello World unter den Mikrocontrollern. Ich lasse die LED-Blinken. Jedoch kann der Arduino Nano ESP32 mehr als nur eine Farbe leuchten und kann auch mit der Methode 'analogWrite' gesteuert werden. Der folgende Code lässt die Grüne LED  ein und ausschalten mit Fade-Effekt.


const int LIGHTRANGE = 50;  
 int mLedValue = 0;  
 void setup() {  
  Serial.begin(115200);  
  // RGB - All LED off (HIGH set the LED off)  
  digitalWrite(LED_RED, HIGH);  
  digitalWrite(LED_GREEN, HIGH);  
  digitalWrite(LED_BLUE, HIGH);  
 }  
 void loop() {  
  Serial.println("RED Fade in");  
  LedFadeLed(LED_GREEN, false);  
  Serial.println("RED Fade out");  
  LedFadeLed(LED_GREEN, false);  
  delay(500);  
 }  
 // ========================================================================================  
 // can fade in or fade out the led light  
 // ----------------------------------------------------------------------------------------  
 // ledPin = Setup the LED PIN  
 // setOn = true for fade in and false for fade out   
 void LedFadeLed(uint8_t ledPin, bool setOn){  
  for(int i = 0; i < LIGHTRANGE; i++) {  
   if(setOn) {   
    mLedValue = 256 - i;   
   }  
   else {   
    mLedValue = (256 - LIGHTRANGE) + i;  
   }  
   analogWrite(ledPin, mLedValue);  
   delay(30);  
  }  
 } 


Mittwoch, 4. Oktober 2023

Unity 3D Projekt mit Blender Dateien werden nicht geladen

 

Wenn im Unity Projekt der Fehler auftritt, dass Blender Dateien nicht geladen werden, dann liegt zunächst der Gedanke fern, dass die installierte Anwendung Blender ein Problem darstellt.

Wie ich zu dem Problem kam. Nun ich hatte zuerst mein Projekt wie immer in ein GitHub Repository untergebracht und wollte dann mein Projekt auf einem anderem System weiterbearbeiten. Zuerst dachte ich, irgendetwas im Projekt habe mit GitHub nicht Commitet, bis ich den richtigen Hinweis bekam, dass Blender (richtig) installiert sein muss.

 

Inhalt

  • Unity 3D
  • Blender Installation
  • 3D Objekte im Blender Datei Format

 

Szenario

Zwei Systeme auf dem Entwickelt wird, haben die selbe Software für die Entwicklung. Das zweite System wird Verwendet, um zu prüfen, ob das Spiel auf einem Schwächerem System funktioniert. Zum Synchronisieren der Sourcen, wird GitHub verwendet und das Repository ist für Unity 3D Projekte eingerichtet.

Auf beiden System ist Blender "Installiert" aber auf dem zweit System werden die Blender Dateien in Unity 3D nicht geladen und im Öffnen Prozess erscheinen mehere Meldungen.

 

Unterschied der Installation

Man kann auf verschiedenen Wegen Blender installieren. Man kann über Steam oder über den Microsoft Store das Programm Blender installieren.


Vorteil, das Programm wird aktuell gehalten.


Da ich selbst nicht immer auf dem neuesten Stand bin, wie man Blender verwendet, habe ich auf meinem Hauptentwicklungssystem Blender von der Blender Seite die Installationsdatei heruntergeladen und installiert.

Auf dem zweiten System habe ich Blender über dem Microsoft Store installiert. Was mir bis dato nicht mehr bewusst war, dass installierte Apps aus dem Microsoft Store in einer eigenen Sandbox laufen, so dass die Apps nur eingeschränkten Zugriff auf das System haben. (Korrigiert mich, wenn ich falsch liege).

 

Lösung

Wenn man im Unity Projekt allgemein Blender Dateien verwendet, dann muss zwingend Blender auf dem System über den herkömmlichen Weg installiert sein. Also die Setup Datei von der Blender Seite herunterladen und die Installation Ausführen. Blender Download

 

Nach Installation von Blender und starten von Unity 3D, sollten die Blender 3D Dateien mit dem Blender Icon oder eine Vorschau des 3D Modells zu sehen sein.

 

 

Mittwoch, 20. September 2023

Game Dev - Pizza Delivery at sea - Mal wieder was anderes


Eigentlich bin ich dabei, meine kleines Projekt Applikation Framework von WPF nach .NET MAUI zu migrieren. Da jedoch das Framework nur von mir genutzt wird und zur Selbststudien Zwecke dient, hat das Projekt keine hohe Priorität. Damit bleibt nicht aus, dass mich dann wieder andere Dinge in der Softwareentwicklung triggern und ich wieder auf den nächsten Zug aufspringe.

Seit Jahren beschäftig ich mich schon mit der Spieleentwicklung, allerdings zuvor nur in kleinen Schüben. Nun hat die Sache wieder etwas mehr Fahrt eingenommen, so dass ich nach dem letzten Ludum Dare Wettbewerb, mein Spiel noch mal in ausführlicher Version entwickle.

 

Verwendet:

Unity 3D

Blender

 

Von Prototyp zum next Level Prototyp

Das Spiel Pizza Delivery, welches in drei Tagen zur Ludum Dare entwickelt hatte, soll noch mal neu und in 3D umgesetzt werden. Dabei soll die Steuerung sowie mehr Details zur Spielmechanik umgesetzt werden.

 

Problem mit Unity

Am 12 September 2023 teilte die Firma Unity, dass das Preismodell sich zum ersten Januar 2024 ändert und somit besonders eine Menge Indi Entwickler verärgert hat. Das führte dazu, dass einige Entwickler, wenn das Projekt dies zu lies, zu einer anderen Engine gewechselt sind. Nun stehe ich da und überlege auch wieder mit der Godot Engine weiterzumachen. Warum ich das noch überlege? Aktuell glaube ich an diese sehr zweifelhafte Umsetzung nicht und aus verschiedenen Berichten habe ich gelesen, dass hier ein Problem mit dem Datenschutz vorliegt und in welchen Umfang die Kosten weitergetragen werden. Zum Beispiel Abo Anbieter wie Microsoft die Kosten selbst tragen, was viele sich nicht vorstellen können. Kosten pro Installation und wenn auch nur pro Gerät, deutet auf Zukunft wegfallen Crossplay Unterstützung.

 

Ich entwickle erstmal weiter meinen neuen Prototypen weiter, bevor ich dann den Wechsel der Engine Entscheide.

 

Erstelltes Konzept zur Ludum Dare 53 - Pizza Delivery

Originalkonzept aus meinen OneNote Notizen kopiert.

 

Pizzalieferung mit einem Schiff

Spielkonzept:

  • Pizza-Lieferdienst
    • Im Intervall gehen Bestellungen ein
    • Alle 30 Sekunden verkürzt sich der Intervall um 5 Sekunden
  • Der Spieler steuert das Schiff
    • Nimmt die Pizzas auf im Pizza-Lieferdienst.
    • Muss an den Hindernissen vorbei navigieren
    • Pizzas müssen in der angegeben Reihenfolge abgegeben werden
  • Pizza Lieferungen
    • An jeder Insel wird angezeigt, welche Pizza bestellt wurde.
    • Für jede Pizza läuft die Zeit ab.
      • 3 Punkte für die richtige Pizza Lieferung
      • 2 Punkte für eine gelieferte Pizza innerhalb des Zeitraums
      • 1 Punkt Wenn die Pizza außerhalb des Zeitraums geliefert wird
    • Punkte werden mit der verbleibenden Zeit der Pizzas multipliziert
  • Spielende
    • Wenn 10 Pizzas nach ihrem Ablauf geliefert wurden

 

 

Das Konzept habe ich in der halben Stunde zusammengestellt. Neben den Ideen, musste auch die zeitliche Machbarkeit erwogen werden, daher sieht das auf den ersten Blick sehr wenig aus. Andere Entwickler haben mit Sicherheit mehr Zeit in den drei Tagen investiert als ich mit ca. 20 Stunden. Wie viele andere auch, habe ich eine Familie, die ich sehr Liebe und gerne Zeit verbringe.

 

Das Ludum Dare Projekt ist praktisch mein Prototyp, mit dem ich das Konzept erprobt habe und nun eine neue Umsetzung davon vornehme. Für die Umsetzung wird von 2D auf 3D gewechselt, welches ich für meine Zukünftiges Projekt ebenfalls nutzen will.

Warum das Spiel Pizza Delivery? Die Spielmechanik von dem Spiel hat einige Punkte, die auch mein zukünftiges Projekt betroffen, nur dass mit Pizza Delivery, die Funktionen in einem Kleinen Umfeld geprüft werden kann und ich auf mögliche Probleme stoße und darauf neue Lösungen entwickle. Das Bedeutet auch, die Lösungen aufzuschreiben und Diagramme zu Zeichnen. Denn zu meinem Beruf als Softwareentwickler, Dokumentiere ich meine Lösungen und Umsetzungen. Zugegeben, ich bin vielleicht nicht der Typische Entwickler, weil ich mehr dokumentiere als nur Jira oder DevOps Tickets auszufüllen.

 

Neues Konzept mit "Pizza Delivery at sea"

Ich brauchte einen neuen Namen, weil der Name "Pizza Delivery" mehr als nur einmal auf Itch.io vorkommt. Die weiteren Punkte werden neu erprobt, wie z.B. in welchem Intervall werden die Bestellungen versendet und wie lege ich eine Variable Zeitspanne an.

  • Intervall Bestellungen muss mit der Karte abgeglichen werden, damit eine Herausforderung besteht.
  • Wie lange wird gewartet, bis nach einer Lieferung, eine neue Bestellung versendet wird.
  • Schiffssteuerung mit Tastatur und Gamepad ermöglichen.
  • Hindernisse auf der Karte mehr unterschiedlicher gestalten.
  • Für die Abgabe der Reihenfolge, kommt die Hilfe eines Richtungspfeils, damit der Spieler weiß, wo hin die nächste Pizza geliefert werden soll.
  • Neben Anzeige, welche Pizza erwartet wird, wird der Name der Pizza gezeigt.
  • Punkte System überarbeiten.
  • Spielende bzw. Game Over Bedingung neu definieren.

Zusätzlich

  • Highscore Board
  • Musik und Soundeffekte sollen einstellbar sein.

 

Sieht nach wenig aus, aber reicht für Monate, um die Inhalte Punkt für Punkt auszuarbeiten. Die Lernkurve ist hier für mich noch hoch, da ich nicht mit denselben Architektur Ansätze gehen kann.

 

Bisheriger Stand

Ich habe die neue Entwicklung hochgeladen auf Itch.io zum Ausprobieren und wird mit der Zeit weiter aktualisiert, wenn ich wieder eine neue Funktion implementiert habe.

 

Pizza Delivery at sea by Codexzier's (itch.io)

 

Auf meinem YouTube Kanal, habe ich eine Playlist angelegt, dass jede neue Implementierung mit einem Kurz Clip zeigt.

 

Youtube - Codexzier's Playlist - GameDev
















 

Sonntag, 12. März 2023

Tool Lagerverwaltung (Teil 6) Umzug nach .NET MAUI


Irgendwann ist immer was Neues da und dann sind Runde Ecken dran. Ich las die aktuelle .NET Pro (2/23) und stellte fest, dass .NET MAUI, die neue Zukunft für Frontend Technologie wird. Oder zumindest vermute ich dies stark, da diese Technologie ein sehr guter Nachfolger zu WPF und Xamarin sein könnte.

Natürlich ist .NET MAUI noch sehr neu und sicherlich sind im Bereich für Plattformübergreifende Abdeckung noch das eine und andere Problem da.

Für mich bedeutet das, dass ich mein ‚Application Framework' umziehe in die neue Welt von .NET MAUI.

Benötigt

  • Visual Studio 2022
  • GitHub

 

Umzug

Eigentlich sag der Titel des Absatzes schon alles. Aber vielleicht gehen einige Sachen noch nicht so wie ich mir das Vorstelle. Daher ist das erste Ziel das alle Grundlegende Funktionen aus dem 'Codexzier's Application Framework' zu übernehmen. Die speziellen Benutzerdefinierten Steuerelemente werden später migriert.

 

Neues Projekt und Struktur aktualisieren

So ganz will ich die Inhalte nicht kopieren und ich bin mir nicht sicher, ob einige Vorgänge genau so funktionieren wie in WPF. Zudem sollen auch die Fehlenden Unit Tests kommen, was wiederum voraussetzt, dass ich für jede Komponente die Anforderungen und Erwartungen beschreibe. Stichwort: Test-Driven-Development oder auch kurz TTD. Ein Thema, dass man immer wieder hört, aber nie gemacht wird oder gefühlt nur von mir umgesetzt wird.

Zunächst erstelle ich das Projekt mit folgenden Einstellungen:

  • Projektvorlage: .NET MAUI Class Library
  • Projektname: Codexzier.Maui.ApplicationFramework


Die Ordner Struktur kann zum Teil übernommen werden. Allerdings ziehe ich vor, erst die Ordner zu erstellen, wenn eine Klasse darin erstellt wird. Damit soll vermieden werden, nicht genutzte Inhalte anzulegen.

Darüber hinaus wurden von der Vorlage Ordner angelegt mit den Namen zu verschiedenen Plattformen.


Aktuell belasse ich die Inhalte und entscheide erst mit späteren Tests auf den verschiedenen Betriebssystemen, ob ich die Ordner benötige.


Issues anlegen in GitHub

Eigentlich sollte das als erstes erfolgen, bevor überhaupt die erste Implementierung stattfindet. Ich habe nachträglich mich Anhand des bestehenden WPF Application Frameworks, meine Aufgaben definiert.

Dazu lernen

Bevor ich die weitere Hauptkomponenten implementieren kann, muss ich mehr über .NET MAUI Lernen. Denn zu diesem Zeitpunkt weiß ich nicht, ob meine Bisherigen Funktionen so weit übernommen werden kann und zum anderen will ich statt MVVM, das MVU Pattern verwenden, dass auf .NET MAUI besser geeignet ist.

Übersicht

Teil 1 - Wiki anlegen in GitHub

Teil 2 - Neue Solution

Teil 3 - Noch ein Wiki anlegen

Teil 4 - Datenbank und Schnittstelle

Teil 5 - Konzept ausschreiben

Teil 6 - Umzug nach .NET MAUI

Ameisen Simulation und andere Dinge

Wer lange sich schon mit C# beschäftig, hat sicherlich schon mal was von AntMe gelesen oder gehört. Diese Idee hatte ich aufgegriffen und mi...