Laden...
Avatar #avatar-4119.png
Abt myCSharp.de - Team
Principal Software Engineer Dabei seit 20.07.2008 16.842 Beiträge
Benutzerbeschreibung
Als Principal Software Engineer berate und unterstütze in Form von Entwicklungsleistung aktiv Projekte und Unternehmen in Sachen technischer Zukunft mit dem Fokus auf auf .NET und hoch-moderne Web-Anwendungen/-Landschaften in der Cloud. Ich präsentiere die Technologien von Morgen und helfe bei der Analyse der korrekten Strategie und Methodiken für die Umsetzung. Neben meinem Tech-Blog SCHWABENCODE.com bin ich seit 2011 in exekutiver Funktion dieses Forums tätig, schreibe Artikel und halte ab und zu Vorträge in kleineren Runden zum Thema Cloud, Web-Development und IoT. Seit 2015 wurde ich jedes Jahr zum Microsoft MVP für (.NET / Azure) ernannt.

Forenbeiträge von Abt Ingesamt 16.842 Beiträge

28.07.2023 - 12:45 Uhr

Was obj und bin Folder sind, und warum die in jedem .NET Projekt sind, lässt sich ja binnen Sekunden ergooglen:

https://stackoverflow.com/questions/5308491/what-are-the-obj-and-bin-folders-created-by-visual-studio-used-for

The obj folder holds object, or intermediate, files, which are compiled binary files that haven't been linked yet. They're essentially fragments that will be combined to produce the final executable. The compiler generates one object file for each source file, and those files are placed into the obj folder.

The bin folder holds binary files, which are the actual executable code for your application or library.

27.07.2023 - 13:52 Uhr

Es ist super anstrengend Dir helfen zu wollen, wenn Du Sachen wie

Das ganze scheint für das .Net Framework zu sein und nicht for .Net Core.

raus haust, was man mit einem 3 Sekunden-Blick in der csproj vom Tisch hauen kann:

<TargetFrameworks>netstandard2.0;monoandroid10.0;xamarinios10;xamarintvos10;xamarin.watchos10;uap10.0;net6.0-windows10.0.19041.0;net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst;net7.0-windows10.0.19041.0;net7.0-android;net7.0-ios;net7.0-maccatalyst;net461</TargetFrameworks>

Und allein die Tatsache, dass 32Feet  wie erwähnt ein sehr weit verbreitetes Projekt ist, das von sehr großen Anwendungen erfolgreich verwendet wird, widerspricht völlig Deinen Aussagen. Auch Deine BLE Aussagen spiegeln sich nach einem kurzen Blick nicht im Quellcode wider.

Dinge wie

Bei dem DLL Project (also das BluetoothLE Projekt) kann man kein .NET Core als Platform eingeben. Auf der GUI akzeptiert er es nicht.

lesen sich für mich als wildes, planloses Rumstochern, das für mich keinen Sinn ergibt, warum Du das tun willst. Das macht hier null sinn.
Du kennst die Lib nun ~60min, machst irgendwas, was für mich jetzt keinen Sinn macht und sagst "geht nicht". Tjo. Ich zwing Dich nicht, die Lib zu nutzen, die andere Leute erfolgreich verwenden. Dann musst halt was anderes Suchen, wenn Du meinst die Lib hier geht nicht, kann nix, und was nicht alles.

Ich bin mir aber sehr sicher, dass auch Du Dein Thema zum Laufen bekommen wirst. Viel Erfolg 😃

27.07.2023 - 12:08 Uhr

Zitat von AmpelB

Unter Program.cs gibt es keine Main Funktion (finde ich ungewöhnlich, aber das haben die ja vielleicht so gemacht).

Top-level statements - programs without Main methods

Stehst sogar im Kommentar der Datei ganz oben. Muss man halt lesen...

bekomme ich eine Exception "Operation is not supported on this platform". Also funktioniert das doch nicht bei Windows?

Du hast doch jetzt den Quellcode. Wieso nimmst Dir nicht 2 Minuten Zeit, schaust in den Quellcode und siehst sofort, warum die Exception geworfen wird.
Siehst sofort, dass es prinzipiell von Windows unterstützt wird - nur in gewissen Fällen nicht.

Zur Not nicht das Paket, sondern den Quellcode ziehen und damit debuggen.
Das ist der Sinn von Open Source - wende es an.

27.07.2023 - 10:55 Uhr

32 Feet ist das bekannteste Bluetooth Package im .NET Ökosystem
https://github.com/inthehand/32feet

Findet man eigentlich direkt, wenn man in GitHub nach .NET und Bluetooth sucht 😃

Wenn man im Projekt selbst dann nach Win32 sucht, kommt das raus
https://github.com/search?q=repo%3Ainthehand%2F32feet%20Win32&type=code

Das zeigt dann direkt die verwendeten Win32 nativen Methoden
https://github.com/inthehand/32feet/blob/5d60e4d2602b4b7dea2d1872ff4ef9074dff9d72/InTheHand.Net.Bluetooth/Platforms/Win32/NativeMethods.cs#L3

Alles da, wie oben beschrieben 😃

27.07.2023 - 10:48 Uhr

Du brauchst auf jedes UI Control ein Event, wenn Du auf etwas lauschen willst.

Dass Deine SelectBox Abteilungen leer bleibt; für uns so nicht ersichtlich wieso.
Geh in den Debugger und kontrolliere, ob FillAbteilungComboBox überhaupt aufgerufen wird.

Wenn ja, dann weißt Du, dass die Event-Reihenfolge stimmt. In der FillAbteilungComboBox selbst kannst mit dem Debugger schauen, was passiert, und warum es leer ist (zB weil GetDepartments nichts zurück liefert).

27.07.2023 - 10:34 Uhr

Was funktioniert denn nicht? Siehe Wie post ich richtig?

Beschreibe den Sachverhalt und/oder das Problem genau (inkl. vorhandener Fehlermeldung)

Und bitte nicht einfach hunderte Zeilen Code posten und hoffen, wir debuggen das.
Debuggen kannst selbst [Artikel] Debugger: Wie verwende ich den von Visual Studio?

26.07.2023 - 10:07 Uhr

Bluetooth ist eine Funktionalität, die vom Betriebssystem (und der Hardware darunter) zur Verfügung gestellt wird. Dazu gibt es viele Funktionen in der Win32 API.

.NET ist ein Cross-Platform SDK, für das Entwickeln von Software.
Willst Du Betriebssystem-spezifische Dinge umsetzen, dann stellt .NET für einige eben solche spezifischen SDKs (wie zB für Desktop) zur Verfügung. Das ist aber reiner Komfort, denn unter der Haube ist .NET einfach nur ein Wrapper der Win32 API.

Im Endeffekt kannst Du also alles Betriebssystem-spezifische ohne weiteres SDK umsetzen, indem Du einfach selbst direkt mit der Win32-API sprichst, wenn Dir was fehlt.

Aber da steht doch auch nie Windows dran. Oder interpretiere ich da was falsch?

Die werden ja Open Source sein - dann schau doch einfach in Quellcode.

25.07.2023 - 09:49 Uhr

Der Android-Namespace steht nur in spezifischen Android-Projekten zur Verfügung. Befindet sich Dein Code in anderen Projektarten (zB Shared Library) wird das mit CS0246 The type or namespace 'Android' could not be found. quittiert. Manuell referenzieren muss man eigentlich nichts, was die Runtime betrifft.

Vermute daher, dass Du Dich in einem falschen Projekt befindest.

Was Du mit Verweis "net7.0-android33.0 available" meinst, ist mit unklar. Nur weil Du ein SDK installiert hast, wird es noch nicht verwendet.
Wichtig ist die richtige Projektart und der richtige Runtime Identifier.

24.07.2023 - 09:40 Uhr

Kenne mehrere solcher Versuche, die gescheitert sind, und dann doch ein MDM eingesetzt haben.

23.07.2023 - 21:17 Uhr

Ich bring nun fast 20 Jahre Leuten C# bzw .NET bei.

Beobachtung ist eindeutig: die Leute, die nach try and error Vorgehen, können den Leuten, die einen strukturellen Lernweg verfolgen, nicht im Ansatz das Wasser reichen. Sie kommen nicht richtig voran, sind frustriert, bauen schlechten Code. Viele bekommen die Kurve, nicht alle.

Ich hab selbst so angefangen und kann sagen: war doof.

Wenn du meinst, dass so ein Vorgehen weniger effizient ist, dann wünsche ich dir trotzdem viel Erfolg.

Zeit hat man immer, denn das Stolpern von issue zu issue kostet mehr Zeit als das Lernen.
Vorgeschobene Ausrede. Auch nicht zum ersten Mal gehört 😃

23.07.2023 - 19:45 Uhr

Auch ist es für mich schwer die vielen möglichen und unterschiedlichen Schweibweise für Codeanweisungen unter einen Hut zu bekommen.

Dir würde es im Prinzip schon helfen, wenn Du Dir einmal die Zeit nehmen würdest, den Einstieg in C# zu suchen und mal die gesamte Einsteiger Doku ein mal zu lesen - dafür ist sie da. Man merkt an Deinen Beiträgen, dass das bisher nicht erfolgt sein kann.
Du wirst Dir niemals alles merken können, aber Du wirst Dich an Dinge erinnern, dass Du das schonmal in der Doku gesehen hast und schneller eine Lösung für Deine Probleme zu finden.

Aktuell verfolgst Du einen Try-and-Error-Weg, der erfahrungsgemäß in den meisten Fällen frustriert, Zeit kostet - und oft scheitert.

mit der ich zurechkommen muss und in der hunderte proprietäre Klassen und Funktionen zur Anwendung kommen, die teilweise auch noch obfuscated sind und die der Hersteller nicht beschreibt, und das für einen C# Neuling.

Das ist nicht unsere Schuld.

23.07.2023 - 13:43 Uhr

Warum wurde kein Tracing / Monitoring in der Applikation umgesetzt, wie man es seit ca. 30 Jahren in allen möglichen Empfehlungen, Code Architecture Guides und auch in den .NET Basics nachlesen kann?
Dann würde man nun nicht um Dunkeln stochern.

Ergo: Zeit das nun nachzuholen. 😉

PS: in den aller meisten .NET SDKs und Bibliotheken ist sowas eingebaut - man muss es nur nutzen.

Ausserdem bleibt beim Beenden des Debuggers die Windows Form offen, sie läßt sich mit keiner Aktion schließen, nur duch Neustart Windows.

Ein potentieller Hinweis auf einen klassischen Programmierfehler, dass unmanaged resource nicht richtig behandelt werden.

21.07.2023 - 14:13 Uhr

Jo, aber nur weil Samples nicht klappen ist das Produkt noch lange nicht out of support. Wenn das so wäre, wäre fast die gesamte Open Source Welt out of support.
Dass Samples nicht sofort klappen gehört zum guten Ton jeder Bibliothek, egal on .NET, Java, Microsoft, AWS....

Manchmal muss man sich leider den Quellcode ziehen und schauen/debuggen.
Weiß leider auch nicht mehr, was ich damals gemacht hab, dass die Samples klappten. War ein Kundenworkshop und nach ~15-20min liefs.

Edit: ich seh jetzt auch kein implizen Issue zu "Samples dont work".
Sondern halt Einzelfragen.

21.07.2023 - 14:08 Uhr

Nö, ist nicht out of support. Sieht man allein an der Commit-History auf GitHub.
Dass Samples nicht auf Anhieb funktionieren... well. Standard, leider. Als ichs vor paar Wochen selbst verwendet hab, gingen die Samples aber noch.

Try.NET ist auch die Basis für alle Live-Demos auf Microsoft Docs oder der .NET Webseite.

20.07.2023 - 13:26 Uhr

3 Minuten zwischen den beiden Antworten.

Magst Dir nicht vielleicht wenigstens ein paar Minuten Zeit nehmen, wenn Dir schon jemand die Recherche abnimmt? 😉

20.07.2023 - 09:46 Uhr

Kam an. Besten Dank.

19.07.2023 - 21:28 Uhr

So wie Du den HttpClient verwendest, zeigt das, dass Du die Doku dazu nicht gelesen haben kannst.
Solltest nachholen, vor allem bei Klassen, die neu für einen sind. Immer hilfreich, wenn man dazu lernen will 😉

19.07.2023 - 12:13 Uhr

Also nochmal:
STRG+D ist eine Tool-Funktion - keine SSH.

SSH.NET wird daher mit 100%tiger Sicherheit keinen Tool-Shortcut an Putty senden.
Wenn Du irgendwie was an Putty senden kannst, dann mit zB SendKeys.

19.07.2023 - 11:19 Uhr

Was ist denn Dein "spezielles" Problem?
Ich dachte auch, dass es Dir um das Befehl-Schicken geht.

STRG+D ist keine Shell-Funktionalität sondern eine Funktion Deines Shell-Tools; vermutlich Putty oder sowas.

Vielleicht würde eine verständlichere Beschreibung Deiner Situation helfen, was Du eigentlich willst.

18.07.2023 - 19:46 Uhr

Verwende den HttpClient mit dessen asynchronen Methoden.
Der WebClient ist seit Jahren obsolete.

Und Dein Async-Konstrukt ist eher semi-gut.
Brauchst aber eh alles nicht, wenn Du einfach HttpClient verwendest.

14.07.2023 - 12:11 Uhr

Keine Ahnung, ob Du von Desktop, On-Prem, Cloud oder was immer sprichst.

Ich verfolge für sowas Hintergrundbedingt immer den nativen Cloud-Weg:

  • EF Core mit EF Migrations
  • Native Cloud Banching Strategie (Feature Branches)
  • Automatisches Aufsetzen der Infrastruktur via Bicep
  • Build und Test der Anwendung im Build Step
  • Publish der Anwendung und der Datenbank (via EF Migration Bundles) im Publish Step
  • Release-Step beinhaltet Infrastruktur-Automatisierung, Database Deployment durch das Bundle

Im Endeffekt alles der Grüne-Wiese-Weg aus den Docs; keine Raketentechnik.
Runtime-Migrations ist ein ausschließlich für Client-Anwendung konzipiertes Modell, das jedoch leider auch in DevOps-Szenarien missbraucht wird.

Links bekommst durch Google und MS Docs selbst; kA was wir Dir da bei dem Text nun rausfinden sollen. Hört sich so formuliert fast so an als ob wir den Job der Recherche für Dich übernehmen sollen: nicht die Aufgabe des Forums- oder nur doof formuliert. 😉

13.07.2023 - 13:18 Uhr

Nur um es für die Nachwelt zu dokumentieren:

Deine Lösung war nun das Paket auf die offizielle Variante zu wechseln und Du hast nur vergessen die usings zu aktualisieren?

13.07.2023 - 11:45 Uhr

Meine Frage ist halt, ob es auch eleganter geht.

War bisher nicht Deine Frage 😉
Klar: man kann da rein aus Software Architektur eine Menge rausholen. zB in eigene Accessor-Implementierungen kapseln, sodass Dein Zeug auch testbar wird.

Aber glaube Deine aktuelle Sorge ist eher das Zeug mal zu verstehen und zum Laufen zu bekommen.

Im IIS habe ich aktiviert und läuft

Ok, warum dann die Aussage "Als lokale Anwenung klappt es mit dem Windowsanmeldenamen gut, doch die Anwendung soll halt unter dem IIS im Intranet gehostet sein."

Die Anwendung wird doch vom Server nur ausgeliefert; Blazor läuft bei Dir laut Deiner Aussage doch weiterhin im Client.

Kann der Anmeldename zB auch von einer Satei in einem Cookie gespeichtert werden und in der "AD-Methode" ausgelesen werden ?

So funktioniert Kerberos nicht. Kerberos ist bereits eine Art von Cookie; nur funktioniert es nicht wie ein Cookie.
Es ist also quatsch das doppelt gemoppelt zu machen - aber die Frage zeigt mir, dass Du Dir die Funktionalität von Kerberbos nich wirklich angeschaut hast 😃

Kerberos ist eine Funktionalität, die im Browser eingebaut ist. Daher funktioniert das auch nicht mit allen Browsern.
Es gibt hierbei einen extra Token, der an den Server weitergeleitet und validiert wird. Der Server muss daher Teil der gleichen Domäne sein. Sobald der Token gültig ist, wird dieser an die App weiter gereicht.

Im Falle von Client-Anwendungen erfolgt der Zugriff auf die Identity automatisch, weshalb Client-Code sich von Server-Code auch unterscheidet und Du nicht identisch programmieren kannst.

Tipp: Schau Dir die Konzepte an, bevor Du anfängst mit dem Coden 😉
Gerade bei Security-Stuff kann das sonst mächtig in die Hose gehen.


Wir können Dir als Forum super bei konkreten Probleme helfen. Aber wir können eher nicht als Lehrer agieren und das Zeug für Dich lernen.
Verstehen und anwenden musst es immer noch selbst.

13.07.2023 - 11:14 Uhr

An für sich ist der Zugriff auf das AD durch den Client schon okay, solange immer die Benutzerauthentifizierung verwendet wird und sich in der Client App kein Service Credential befindet.
Dann gibt die AD auch nur die Informationen aus, die der User sehen darf.

Eine Berechtigung via CSV in einer Client App ist aber natürlich ein No-Go. Jeder mit etwas IT/Code-Erfahrung kann das umgehen.
Sowas ist nur sicher über eine Service-seitige App (zB API) umsetzbar.

Mit Hilfe des On Behalf Flows kann aber eine solche API die Benutzeridentität entgegen nehmen und sich als Benutzer gegenüber dem AD identifizieren. Bei Kerberos für das Intranet AD heisst das Kerberos Constrained Delegation Overview

Und ja - wenn man mit Benutzerdaten, die meist GDPR unterliegen, arbeiten will, dann sind das Maßnahmen, die man beachten und implementieren muss. Witzigerweise gehören dazu auch das Umsetzen eines internen Telefonbuchs, auch wenn sich das Wirr anfühlt (was es ist).

Wie aber bekomme ich es hin, den ermittelten Namen hier in authMessage gespeichert, an allen stellen verfügbar zu haben ?

Du musst das vereinfacht ausgedrückt in jeder Page implementieren.

Blazor hat ein Page-Inheritance Model, dass das etwas vereinfacht / modularisiert.

doch die Anwendung soll halt unter dem IIS im Intranet gehostet sein.

Wie im anderen Thema bereits beantwortet: Du musst das im IIS konfigurieren (evtl installieren, das Modul Windows Identity ist per default nicht aktiv).

https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/

12.07.2023 - 14:49 Uhr

Hab Dir den Link weiter oben ja nicht gegeben, um Dich zu ärgern: https://mariadb.com/kb/en/mysqlconnector-for-adonet/
Ist die offizielle Provider Seite von MariaDB.

12.07.2023 - 14:13 Uhr

Naja, der neue Provider ist nicht erst seit gestern der offizielle, empfohlene Weg, sondern - wenn ich das richtig seh - seit über 3 Jahren.

Wenn der alte Provider wirklich die neue Engine nicht mehr (musst selbst nachschauen) unterstützt: tjo...
Schlauberger-Spruch: eine gute Software Architektur - hier mit Repositories - verhindert in 99,9% der Fälle, dass ein Provider-Wechsel großen Aufwand verursacht.

Wenn ihr euch nun über 3 Jahre nicht um die angekündigte Aktualisierung gekümmert habt...Lehrgeld.

Dass man bei der Software Entwicklung sein Zeug regelmäßig warten/pflegen muss ist ja nun auch keine bahnbrechend neue Erkenntnis.
Mehr kann ich da auch nicht aktiv beitragen. Von Außen betrachtet könnte das aber durchaus die Fehlerquelle sein. Musst selbst verifizieren.

12.07.2023 - 13:51 Uhr

Das Schema ist das Schema. Das ist eine technische Bezeichnung für den Aufbau Deiner Datenbank.

DBNull kommt aus dem .NET Client. MySQL/MariaDB kennt kein DBNull.
Meistens tritt das auf, wenn das Schema nicht stimmt oder eine Abfrage ungültig ist.

Das kann auch auftreten, wenn Dein DB Provider (hier laut Deiner Aussage nur ".NET Connector" genannt), mit Deiner DB Verison nicht kompatibel ist.

Keine Ahnung, von welchem .NET Connector mit Version "8.0.33.0" Du sprichst. Der offizielle Connector ist MySqlConnector und da gibts Deine Version nicht. Siehe auch MariaDB MySqlConnector for ADO.NET

MySQL versioniert eigentlich die Connectoren und die Engine gleich. Deine Engine hat 10 Dein Provider 8.
Hört sich erstmal fischig an. Aber wie gesagt: keine Ahnung, was Du verwendest.

Sind alles Hausaufgaben, die Du eigentlich selbst kontrollieren kannst 😉

12.07.2023 - 12:41 Uhr

Dass etwas plötzlich DbNull ist spricht dafür, dass das Schema nicht stimmt; der Client etwas anderes erwartet.

HeidiSQL / MariaDB haben in der Vergangenheit bei Server-Updates das Schema verändert, wenn da was inkompatibel mit neuen Versionen war.
Prüf also, ob das Schema mit der DB noch dem entspricht, was Du erwartest.

11.07.2023 - 22:10 Uhr

Zitat von cprogrammer

Innerhalb dieser Klasse muss ich auf Funktionen zugreifen, die von "Indicator" geerbt wurden.

Das sind Methoden, keine Funktionen.

Wenn ich Subklassen bilde, kann ich dann von meinem "OwnIndicator" erben, um dann wiederum auf die von "Indicator" geerbten Funktionen indirekt zugreifen zu können, also nach dem Motto:

Das kann man pauschal nicht beantworten.

Wenn es ein modernes Pluginsystem ist, dann kannst Du genauso Dependency Injection nutzen, wie in sonstiger gut strukturierter Software auch.

11.07.2023 - 10:38 Uhr

Sei Dir bewusst, dass Du sehr wahrscheinlich ebenfalls religiöse Antworten auf diese Frage erhälst 😃


Meine persönlichen 50 Cent dazu: es gibt derzeit keine einzige Microsoft UI Technologie, die die Nase vorn hat.
Persönlich sehe ich weder WinUI noch MAUI production-ready. MAUI höre ich immer wieder auf Twitter und Co, dass es ohne Comunity Toolkit quasi nicht möglich ist was tolles umzusetzen.

Sowohl vom MAUI wie auch von WinUI hört man dutzende von Long-Running-Bugs, dass die Produktteams (wohl?) verkleinert wurden und ohne Community Drive geht quasi nichts.

Auf der anderen Seite höre ich, dass es ein enorm zufriedenes Ökosystem rund um Avalonia gibt.


  • Ich gehe davon aus, dass WinUI kurzfristig der offizielle Weg auf dem Desktop sein wird.
  • Ich gehe davon aus, dass MAUI langfristig die Basis für Cross-Platform sein wird.
  • Ich hoffe, dass das .NET Team die Kurve bekommt und XAML für HTML endlich beerdigt.

Meine Kollegen, die im Gegensatz zu mir voll im Fokus sind auf (Cross-)Apps, setzen sowohl für eigene wie auch für Kundenprojekte mittlerweile bei Cross-Platform auf MAUI, um auch hier ein Insight zu geben.

10.07.2023 - 22:38 Uhr

Die Logik, wie Du es haben willst, ist Deine Anforderung. Wenn Du es nicht sofort in Code gießen kannst, dann schreib es auf ein Blatt Papier und versuch den Flow aufzuzeichnen.
Dann programmier es aus. Alles, was in der Logik möglich ist, ist auch im Code möglich.
Ansonsten hast ein Logikfehler.

D.h. abhängig von der Position von simpleBar innerhalb von simpleBarList müsste geprüft werden, ob ein bestimmtes Muster aus gemischten bullishen oder bärischen Kerzen  vorhanden ist.

Du musst auch [Artikel] Drei-Schichten-Architektur beachten.
Deine Logik und Deine Validierung/Analyse musst Du auf die Daten umsetzen, nicht auf UI-Objekte. Die UI ist nur eine visuelle Hilfe, die keine Logik kennt.

Deine ganze Erklärung ist bisher so, dass Du irgendwelches UI Zeug (akas Candles) erzeugst, und darauf dann Logik anwendest.
Das unnötig komplex. Programmiert man so nicht.

10.07.2023 - 16:45 Uhr

Du musst Instanzen aka Objekte initialiseren, bevor Du sie nutzen kannst, was Du mit variablenSpeicher nicht tust.
Siehe FAQ: FAQ - Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Der Debugger zeigt Dir solche Fehler innerhalb von Sekunden.

10.07.2023 - 14:57 Uhr

Zitat von perlfred

Das Enum leite ich doch von long ab. Also Verwaltet das Enum long-Einträge. Oder ist dem nicht so???

So funktioniert das Typsystem nicht.
Jede Klasse in .NET erbt auch von object - trotzdem ist nicht jede Klasse gleich.

Die MyFlags Eigenschaft muss also vom Typ long sein (vom gleichen Typ wie die Enum-Einträge)), sonst könnte ich sie ja nicht mit alle Einträgen die ich im Enum deklariere "vergleichen "

Für Vergleiche brauchst Du keine Bitmask Enumeration.
Das macht man nur, wenn man wirklich mit Bitmasks arbeiten will. Für alle anderen Szenarien reicht völlig das Standard-Verhalten von Enum und simplen Flags.

10.07.2023 - 14:01 Uhr

Kommt halt immer drauf an. Die meisten Enums haben kein 0, sodass dies eine ungültige Value darstellt. 0 als Value ist immer schlecht/ungünstig - außer es soll eben "Nichts" ausdrücken.
Hier gehts ja irgendwie im System-Folder; nur wohl mit ner anderen Logik. Als Vergleich: Environment.SpecialFolder Enum

10.07.2023 - 13:18 Uhr

"Nichts" wird bei Flags i.d.R. durch Nullable umgesetzt. Die Wahl "0" ist aber in der Tat sehr ungünstig.

10.07.2023 - 12:57 Uhr

Weil long und ein Enum erstmal völlig verschiedene Typen sind, da C# eine typisierte Sprache ist.
Willst das enforcen, musst dem Compiler Dein Vorhaben bewusst durch ein Cast mitteilen. Die Operatoren stehen nur für die Basis-Typen zur Verfügung (siehe Docs), aber nicht als Misch-Masch von long und Enum.

10.07.2023 - 11:53 Uhr

Weil Du das Enum verwenden musst, wenn Du mit Flags arbeiten willst - nicht long.
Dein ENum kennt die Flag-Operationen, nicht der Basistyp; und vor allem nicht gemischt.

07.07.2023 - 22:40 Uhr

Zitat von Tommix

Es ist nicht wirklich wichtig und man kommt auch nur drauf wenn man Langeweile hat, aber der Vollständigkeit halber:

Wenn ich auf der Seite myCSharp Mitglieder https://mycsharp.de/users den unten versteckten Sortiermodus auf "Registriedatum" ändere und dann auf Seite 2 wechsele ist es wieder auf "Beiträge" zurückgesetzt. Ändere ich es noch mal bin ich wieder auf Seite 1 usw.

Danke, ist mit nächstem Deployment gefixt.

Zitat von david.m

Ich wollte 2-FA einrichten, erhalte aber nach Eingabe des Bestätigungscode nur eine Fehlermeldung.

Danke, gefunden und fix ich die Tage. Sorry, sollte gerade bei Auth nicht passieren.

07.07.2023 - 11:50 Uhr

Jeder Besuch einer Multi Org App triggert einen Consent, wenn er nicht gegeben wurde - egal ob normaler User oder Admin.

Die Admin Consent URI kannst einfach bauen: Request the permissions from a directory admin
Der normale User Consent kommt beim ersten Besuch eines Benutzers auf ein authentifizierten Endpunkt, wenn der Redirect zum Login erfolgt.

und gleichzeitig bei mir im Service der "Eintrag" für den Kunden erstellt werden kann.

Du gibst dem Consent eine Redirect URI auf einen authentifizierten Endpunkt mit. Der Redirect erfolgt, wenn der Consent gegeben wurde.
Wenn der Endpunkt besucht wurde, dann kannst Du das in Deinem System übernehmen.

Das ist im Endeffekt ein stink-normaler Invite-Flow gepaart mit dem Consent-Verhalten von AAD.

07.07.2023 - 11:07 Uhr

Azure Produkt (ich denke Azure App Service) setzt man am besten und wie ist dies umsetzbar?

Das kann man Dir so pauschal nur mit "verwende ein PaaS-Produkt" beantworten, weil das in den aller meisten Fällen die Basis für SaaS-Anwendungen ist.
Azure Service-Auswahl musst selbst evaluieren.

ich möchte nicht jedem Kunden zumuten die Anwendungsregistrierung selbst durchzuführen

Das ist eine Limitierung, die Du nicht selbst bestimmen kannst. Je nachdem was Du im Ziel-Tenant brauchst, muss der Admin den Consent geben - oder nicht.
Brauchst Du nur User-Rechte, dann kann der User das selbst akzeptieren. Eine App-Registration, die internen Tenant Zugriff ermöglicht, geht nur über den Admin.

Es gibt auch Besonderheiten in Azure: ist man IT-Dienstleister für andere Unternehmen und betreut zB eine Tenant-Umgebung für den Kunden, dann kann man einen generellen Tenant-Access für Anwendungen erstellen, sodass es keinen Consent mehr gibt.
Dadurch kann man als IT-Dienstleister als Partner agieren und Anwendungen für Kunden zur Verfügung stellen; nennt sich GDAP.

06.07.2023 - 10:00 Uhr

Das Dev Kit ist im Beta/Preview-Stand. Wenn Du einen Bug findest, dann melde das an das Team.
Siehe C# Dev Kit

06.07.2023 - 09:01 Uhr

Was ist denn Deine Frage, wo kommst Du nicht weiter?
Mit 10 Sekunden Google finde ich hunderttausende Treffer bei Google bzgl. Alpha shape Algorithm c#

05.07.2023 - 23:07 Uhr

Beschreib Deinen Use Case. Dann kann man Dir auch helfen. "Der User soll 1-100 Objekte erzeugen und dann analysieren und konfigurieren" ist definitiv keiner.
Was hast Du vor, was soll das werden?

PS: gilt auch für Deine anderen Themen.
Du beschreibst ganz oft Symptome, statt den Use Case und den Ausgangspunkt zu beschreiben.
Da haste aber womöglich schon den falschen Weg eingeschlagen.

02.07.2023 - 21:19 Uhr

Kommen wir nicht auf die Lösung, ist es schade, aber kein Weltuntergang. Habe ja noch VS 2019 Enterprise unter Win10. Wäre nur schön wenn ich ein Projekt unter Win und Linux bearbeiten könnte. Aber geht das überhaupt? Sind ja 2 verschiedene Betriebssysteme und andere ausführbare Dateien.

Das geht schon seit Jahren und ist "Standard" seit .NET Core respektive .NET 5 und höher.
Sofern Du das Projekt nicht für ein spezifisches Betriebssystem erstellst, funktionieren die Binaries auf jeder Plattform. Die Binaries sind hier auch nicht "anders".

Natürlich kannst eine Windows Desktop App nicht auf Ubuntu ausführen; aber genau dafür gibts dann die spezifischen Deployments.
Alles andere ist Cross Plattform-fähig.

Des weiteren darfst Compiler und Development nicht vermischen.
Der Compiler von .NET Core (.NET 5+) funktioniert auf allen unterstützen Plattformen und Betriebssystem.

Development-Tools / IDEs können Cross Plattform-fähig sein - müssen sie aber nicht.
VS 2022 ist spezifisch für Windows, andere Linux-only und andere wiederum auf Windows und Linux. Andere Browser-basiert.
Sie alle sprechen aber auch "nur" mit dem Compiler.

Theoretisch kannste Dir ne C# Datei mit dem Notepad schreiben und den Compiler von Hand bedienen.
Alles kein Problem.

29.06.2023 - 09:28 Uhr

Nein, nicht möglich. Dazu bräuchte es schwarze Magie.

Projektionen sind immer und überall (nicht nur .NET, nicht nur EF, nicht nur SQL) ein One-Way-Mechanismus.

28.06.2023 - 16:10 Uhr

In der Form gar nicht, weil Du mit Projektionen arbeitest. Deine Modelle sind Ausschnitte aus verschiedenen Tabellen. 
Das kann und wird nicht in die andere Seite aufgelöst; keine Software kann hellsehen.

Du musst hier den neuen Eintrag manuell erkennen und einen eigenen Sql-Befehl absetzen, das die Entitäten in die DB schreibt.
Der Weg ist aber der richtige: so lädt man effizient Daten. Aber geschenkt bekommt man hier leider nix*

*man kann sich die Projektionen durch LinqKit Profiles schenken lassen; aber das ist nur in Hilsmittel fürs Lesen.

28.06.2023 - 16:02 Uhr

Jetzt ist halt nur die Frage, wofür benötigt das Programm das erste Mal Admin Rechte? Ich benutze Preferences. Kann es sein, dass zum Erstellen der zugehörigen Datei Admin Rechte erforderlich sind? Zum schreiben/lesen später aber nicht mehr?

IIRC braucht MAUI Adminrechte, wenn Du FullTrust-Rechte anforderst.

28.06.2023 - 15:44 Uhr

Die Ausführung im Client ist halt nun mal das sicherste; daher verfolgen im Prinzip alle solche Isolationen den Client-Weg.
Kenne keine aktuelle Server-Side-Lösung, die man für sowas empfehlen kann.

Es gibt sowas wie .NET Fiddle, die aber eine eigene Isolation auf VM-/Container-Ebene haben.

Dann gäbe es dann noch Code Server, der alles mögliche kann: https://github.com/coder/code-server  
Braucht aber auch eine Umgebung, Setup und Config.

Dass nun Dein API Endpunkt unnötig ist... well. Daher evaluiert man besser vorher 😃

28.06.2023 - 14:14 Uhr

Clients wie Xamarin, Desktop etc… gelten als vertrauensunwürdige Umgebungen.

Hier sollten niemals Credentials in der App sein. Das ist alles auslesbar.

Einzige sichere Möglichkeit ist den User über Tokenverfahren zu authentifizieren und den Token an der API zu validieren.

Solch ein Client sollte immer über eine API - in der Regel Backend for Frontend-Prinzip - umgesetzt sein, niemals direkt auf Datenbanken oder sonstige APIs.

Das ist ein ganz wichtiger Grundsatz in Sachen Sicherheit.