Laden...
Avatar #avatar-2534.gif
Khalid myCSharp.de - Experte
Softwareentwickler Hannover Dabei seit 19.07.2005 3.511 Beiträge
Benutzerbeschreibung

Forenbeiträge von Khalid Ingesamt 3.511 Beiträge

31.03.2021 - 13:21 Uhr

Oh mein Gott ist das peinlich 😁

Ja, der Fehler lag bei mir... Da flog ne Exception, die die Registrierung unterbrochen hat. Die Exception wurde - aufgrund der massiven Dummheit des Entwicklers (also ich) - gefangen und als Debug-Type ins Log gefeuert (Log war natürlich auf Information gestellt). Tja, und so weiter und so weiter.

Aber das schöne bei sowas ist natürlich, dass ich viele Dinge in der Zwischenzeit über Azure gelernt habe. Ich kann z.B. sagen, dass App Services über docker-compose an sich super funktionieren 🙂

Gruß
Khalid

29.03.2021 - 18:12 Uhr

Danke für die Antwort

Ich kann mir beim besten Willen nicht vorstellen, wie daran die äußere Umgebung schuld sein soll oder kann.

Tja, frag mich mal 😁

Ok, dass Azure noch eine Liste weiterer Parameter dazu gibt, wusste ich jetzt so nicht. Dann bastel ich mal ein wenig weiter und lasse mir mal alles ausgeben, was da noch so reinkommt. Kann mir auch nur vorstellen, dass da irgendwas quer schießt.

Gruß
Khalid

29.03.2021 - 17:03 Uhr

Hallöle,

sorry zunächst, für den Betreff. Mir ist nichts besseres eingefallen. So, ich bin hier etwas am verzweifeln. Ich habe folgendes Setup

  • .NET 5 Web API
  • nuxt SPA
  • nginx Proxy

Alle Komponenten werden als Docker Container gebaut und in eine Azure Registry gepumpt. Ziehe ich mir jetzt lokal alle Docker Container via docker-compose in eine lokale Umgebung und starte das Ganze, funktioniert es wie erwartet und alles ist gut. Ziehe ich die nahezu identische docker-compose Datei in ein Azure AppService, verhält sich das auf einmal etwas anders. Sprich, es geht nicht 🙂

Was genau ist das Problem?
Ich nutze MediatR für das CQRS Pattern und Lamar als DI Container. Lasse ich mir beim Start der WebAPI über einen HostedService ausgeben, was alles gescannt wurde von Lamar, sehe ich alle drei Assemblies meiner Solution. Nennen wie sie mal Project.Api, Project.Models und Project.Models.SubModel. Also die Assemblies sind da und geht auch nichts verloren (was aber auch ziemlich merkwürdig wäre, da der Docker Container lokal/AppService identisch ist). Lasse ich mir auch ausgeben, was Lamar alles registriert hat, sehe ich zig "IRequestHandler<DummyRequest, DummyResponse" Registrierungen. Alle meine RequestHandler halt. Das ist lokal.

Starte ich den AppService jetzt via docker-compose und lasse mir das Log ausgeben, sehe ich auch alle von Lamar gescannten Assemblies (die drei oben), ABER es fehlen nahezu alle Registrierungen. Es ist nur ein Bruchteil von dem, was eigentlich alles dabei ist. Einzig die Registrierungen für FluentValidation sind sichtbar. Alles andere verpufft also.

Tja, und da komme ich nicht weiter. Ich sehe den Unterschied nicht und weiß nicht, wo ich ansetzen soll. Wie gesagt, der Docker Container ist identisch. Es kann also ja an sich nicht an den Binärdaten liegen. Die Konfiguration zwischen lokal/AppService unterscheidet sich nur an der BaseURL für die nuxt Anwendung und dem ConnectionString zum Azure Sql Service. Alles andere ist ebenfalls identisch.

Woran kann das liegen, dass Lamar einfach nichts findet, obwohl er die gleichen Assemblies scannt?

Oder ist das noch ne Macke von den AppServices, da docker-compose noch experimentell ist?

Ich bräuchte einfach mal ein paar Ideen 🙂

Gruß
Khalid

26.11.2020 - 10:44 Uhr

Wow! Und vielen Dank für euer Engagement.

05.06.2020 - 08:15 Uhr

Moin,

so, ich hab mir das jetzt alles mal versucht weiter detailliert anzuschauen. Sobald man eine eigene Implementierung des AuthenticationStateProviders in die Services legt und gleichzeitig die von MS zur Verfügung stehenden Extensions "AddApiAuthorization" oder "AddOidcAuthorization" verwendet, knallt es an jeder Ecke. Scheinbat castet er im Hintergrund immer auf die von ihm eigentlich injizierte Instanz des AuthenticationStateProviders.

Auch wenn es wahrscheinlich bekloppt ist, habe ich jetzt angefangen eine eigene Implementierung rund um die oidc-client Library zu schreiben und nicht die von MS bereitgestellten Mittel zu verwenden.

Aber da es eh meine ersten Gehversuche in Blazor sind, ist das ein ganz nettes kleines Projekt um besser die Mechaniken in Blazor zu verstehen.

Gruß
Khalid

03.06.2020 - 17:05 Uhr

Moin zusammen,

ich beschäftige mich seit geraumer Zeit mit Blazor und bin jetzt an dem Punkt angekommen, meine Test-Anwendung gegen einen IdentityServer4 zu authorisieren. Das funktioniert sogar auch problemlos. Allerdings stoße ich gerade auf ein Problem, zu dem ich nichts finde, oder ich einfach nur falsch verstehe.

Also, wenn der JWT Token vom ID4 zurückgeliefert wird, wird diese Information in den Session Storage geschrieben. Sprich, wenn ich den Browsertab schließe und einen neuen öffne, muss ich mich erneut einloggen. Das ist natürlich später für die User nicht tragbar. Blazor nutzt im Hintergrund die oidc-client.js Library. In einer vorherigen Test-Anwendung über vuejs konnte man in den UserSettings des oidc-clients den userStore mit angeben:


"userStore": new WebStorageStateStore( { store: localStorage }

Diese Möglichkeit scheint es innerhalb von Blazor nicht zu geben. Innerhalb der BlazorApp initialisiere ich die Services via


builder.Services.AddApiAuthorization(x => x.ProviderOptions.ConfigurationEndpoint = "oidc.json");

In der oidc.json stehen alle weiteren Metainformationen


{
  "authority": "https://localhost:5000",
  "client_id": "blazor",
  "redirect_uri": "http://localhost:5001/authentication/login-callback",
  "post_logout_redirect_uri": "http://localhost:5001/authentication/login-callback",
  "response_type": "code",
  "scope": "openid profile email",
  "userStore": "new WebStorageStateStore({ store: localStorage})" // das geht hier so natürlich nicht
}

Hier kann der userStore nicht überschrieben werden, da es hier ja als String interpretiert wird.

Weiß irgendwer, wie ich Blazor (bzw. den oidc-client dahinter) dazu verdonnere, den localStorage zu verwenden anstatt den sessionStorage? Oder macht man das erst gar nicht? Und wenn ja, wie schaffe ich es das der User sich nicht jedesmal neu anmelden muss?

Gruß
Khalid

12.12.2019 - 16:36 Uhr

Moin,

eine gute Erklärung ist zu finden unter: https://stackoverflow.com/questions/9581745/sql-is-null-and-null

Grundsätzlich liefert eine Prüfung auf NULL via Equals immer false zurück. Du musst die Daten hier mittels "IS NULL" filtern.

Also


SQLCommand.CommandText = "DELETE FROM SteuerrechnerRechnungsdaten WHERE Rechnungsname IS NULL";

Gruß
Khalid

12.12.2019 - 16:33 Uhr

Moin,

siehe: ListViewItemCollection

Warum erstellst du erst eine List<ListViewItem> und fügst die Elemente dort ein? Warum nicht in der Schleife gleich per "lv.Items.Add(neu)". Die Methode AddRange nimmt ein Array ListViewItem entgegen. Deine markierte Zeile müsste also lauten "lv.Items.AddRange(arrayItems.ToArray())".

Gruß
Khalid

07.11.2019 - 13:35 Uhr

Moin,

auch wenn ich ThomasE. zustimme, dass solch Notifications eigentlich in den Service selber gehören, kann man solche Fälle lösen, wenn man z.B. eine Message Queue verwendet:
MSMQ and SQL Server Integration

Gruß
Khalid

23.09.2019 - 07:46 Uhr

Moin,

relational kann man sowas auch abspeichern und an sich ohne weiteres abfragen. Auch hier hängt dementsprechend ein Analysis Cube oder ähnliches Gebilde hinten dran. Auf Rohdaten, wie Abt schon geschrieben hat, würde ich es aber auch nicht los lassen.

Ich habe solch eine "Fußball-Struktur" selber noch nie relational designt, würde aber auch daruf tippen, dass die Tore relational gesehen eine eigene Tabelle ist. Denn nur so, wie du ja selber auch schon festgestellt hast, können beliebig viele weitere Statistiken angehängt werden (Spieler, Minute, aus ruhenden Ball, usw...).

Man nehme mal an, man habe eine Tabelle mit ganzen Zahlen, ein paar hängen zusammen, also folgen aufeinander, aber es gibt auch Lücken auf dem abgebildeten Zahlenstrahl. Use SQL to Find Missing Numbers and Gaps in Sequence of Numbers like Identity Column. Ist zwar der umgekehrte Fall, lässt sich ja aber dann einfach abändern für längste bekannte Sequenz.

Gruß
Khalid

16.08.2019 - 09:46 Uhr

Das einfachste ist:
DB in SINGLE USER Mode versetzen. Alle Constraints deaktivieren


EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL"

Neue Tabelle erzeugen mit gleicher Struktur nur mit IDENTITY. Tabelleninhalt rüber schubsen (INSERT INTO x SELECT FROM y). Alte Tabelle droppen. Neue Tabelle umbennenen. Alle Constraints wieder aktivieren.


exec sp_MSforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL"

DB wieder in MULTI USER versetzen. Je nach Datenmenge ist das ziemlich schnell gemacht.

14.06.2019 - 07:28 Uhr

Moin,

welche Datenbank man nehmen sollte, hängt sehr stark vom Anwendungsfalls ab. Vielleicht reicht schon eine Sqlite DB, oder du brauchst ein SQL Server Enterprise. Sprich, die Range geht von minimal bis ins extreme. Vielleicht ist auch eine NoSQL DB sinnvoller? Auch deine Anforderungen sind nicht bekannt. Auf was für einem OS soll die DB laufen? Von wie viel Daten sprechen wir? Wie viele Zugriffe pro Sekunde? Usw usw...

Die Tabelle komplett auf einen Datagrid laden und dort filtern, oder direkt bei der Abfrage filtern?

Auch wenn du noch am Anfang stehst, solltest du dir die Frage selber beantworten können 😃

Und nebenbei: Wenn du eine Anwendung bauen willst, die es als Desktop und Webanwendung gibt, wirst du an einer Web API (z.B. ASP .NET Core) nicht vorbeikommen. In dieses Thema solltest du dich unbedingt einlesen. Anhand deiner Fragen erkennt man schon, dass du noch recht am Anfang stehst (was ja absolut nicht schlimm ist). Hier würde ich dir empfehlen, dass du dich erst weiter in die Grundlagen vertiefst, da gleich solch ein Anwendungsfall sich nicht unbedingt als Startprojekt eignet. Außer es ist eine reine "Spielwiese" für sich.

Ok, in der Zwischenzeit hat Stefan.Haegele geantwortet. Aufgrund deiner Antwort stellt sich immer noch die Frage, ob es eher relationale Daten sind (SQL) oder eher strukturierte (NoSQL)?

04.06.2019 - 07:35 Uhr

Finde ich gut und war abzusehen. Ähnliche "Fehlleistung" wie Silverlight.

22.05.2019 - 13:08 Uhr

Eine weitere Möglichkeit sind die SQL Change Automation Tools von Redgate

18.04.2019 - 11:59 Uhr

Den Toad Data Modeler kann ich nur empfehlen. Lohnt sich aber auch erst, wenn man schon ein relativ "mächtiges" Schema vor sich hat. Für ein paar Tabellen ist das Ding zu oversized. Jedenfalls meiner Meinung nach.

20.12.2018 - 12:10 Uhr

Wenn es nicht unbedingt per ODP sein muss, würde ich den ManagedDriver von Oracle empfehlen. Das Ding ist nur 5MB groß und reicht vollkommen aus. Ansonsten schleppt man immer ein über 100MB großen Client mit sich rum.

14.12.2018 - 09:16 Uhr

Moin,

wenn ein Exchange im Hintergrund rumwerkelt, würde ich definitv die EWS Managed API verwenden.

Erste Schritte mit der verwalteten EWS Managed API

Gruß
Khalid

11.10.2018 - 18:20 Uhr

Static. Eindeutig Static... 😁

06.09.2018 - 08:28 Uhr

Moin,

du musst die Einträge dem Dictionary hinzufügen, da du diese ja auch per BindingSource bindest. Die ListBox bindet sich ja an das Dictionary. Wenn du jetzt Elemente direkt zur ListBox hinzufügst, weiß die ListBox ja nicht mehr was sie zu tun hat, da sie ja den Eintrag nicht selber in das Dictionary schreiben kann. Hoffe das war verständlich 😃

Gruß
Khalid

05.09.2018 - 09:01 Uhr

Hinzu kommt ja, dass MS sich auch für die neuen Rechenzentren auch der DSGVO verpflichten. Dass ist eigentlich der wichtigste Punkt. Wo der Server steht, ist mir insgesamt egal. Leider nicht den anderen. Da kann ich Abt nur zustimmen. Reine Sturheit...

04.09.2018 - 13:50 Uhr

Nur so als Frage: Warum nutzt du nicht Json.NET (Newtonsoft)? Etabliertes Package, welches so ziemlich überall genutzt wird.

04.09.2018 - 07:35 Uhr

Also ich lese die News etwas anders.

Azure soll im vierten Quartal des Kalenderjahres 2019 allgemein verfügbar werden. Office 365 soll im ersten Quartal Kalenderjahr 2020 folgen sowie Dynamics 365 im Laufe des Jahres 2020.

Aufgrund dieser veränderten Kundenanforderungen werden die neuen Cloud-Regionen nun den Schwerpunkt unserer Cloud-Strategie in Deutschland bilden

Die "Deutschland-Cloud" beginnt erst. Sie ist "nicht mehr" für Neukunden verfügbar, sondern "erst bald" für Neukunden verfügbar.

[Edit]: Achso. Es regen sich jetzt alle auf, dass es nicht mehr "Microsoft Deutschland Cloud", sondern dann nur noch "Microsoft Azure" in Deutschland ist. Da verstehe mal jemand die Aufregung...

30.08.2018 - 07:35 Uhr

Moin,

das lässt sich über Common Table Expressions (CTEs) lösen (https://docs.microsoft.com/de-de/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-2017).

Z.B.


WITH Bla AS
(
  SELECT
    CASE WHEN x = y THEN 1 ELSE 0 END AS Wert1
    CASE WHEN y = z THEN 1 ELSE 0 END AS Wert2
  FROM Tabelle
)
SELECT * FROM Bla
WHERE Wert1 = 0

Gruß
Khalid

28.08.2018 - 14:23 Uhr

Solange die Excel-Datei auf dem Server liegt, ist das kein Problem (z.B. mit NPOI, oder das genannte OpenXML). Wenn die Datei auf dem Client liegt, muss diese natürlich erst zum Server hochgeladen werden, dann manipuliert werden, und dann wieder heruntergeladen werden.

17.08.2018 - 08:52 Uhr

@crazyyzarc:
Es macht einfach absolut kein Sinn irgendwas vor eine Variable zu setzen. Warum auch? Was soll das bringen? Ich verstehe es einfach nicht 😃

So um 1990 herum, wo es noch keine wirklich guten ausgearbeiteten IDEs gab und man eher mit nem Notepad programmiert hat, da habe ich tatsächlich Prefixe verwendet. Aber heute? Da nehmen die IDEs doch ein alles ab. Mouse Hover drüber und ich weiß welcher Typ (nutze konsequent var), rechtklick zur Deklaration, usw usw. Da braucht man definitiv keine Prefixe mehr und diese sind - zu recht - heute eher total verpönt.

Und das aller aller wichtigste: Einfach eine Variable so benennen, dass man gleich weiß was die "vor hat". Es gibt keine Zeichenbegrenzung bei Variablennamen 😃

14.08.2018 - 10:38 Uhr

Hi,

was haltet ihr davon, Objektvariablen mit einem @ - beginnend zu bennen?

Gar nichts 😃

Das @ wird verwendet um ggf. Variablen zu erstellen, die so heißen wie Schlüsselwörter. Also z.B. @event, oder @public. Vor allen Variablen ein @ zu kloppen ist, naja, ziemlich mies. Und ganz ehrlich, man sieht auch so wo Variablen verwendet werden, da brauche ich kein @ davor stehen zu haben. Mich persönlich würde das massiv verwirren und das Ganze extrem unleserlich machen.

14.08.2018 - 09:21 Uhr

Aber es ist halt auch keiner da, der das ... einfach so weiss ... wie man das coden muss, so wie ich mir das gedacht hatte

Das kann man jetzt so nicht sagen, du verstehst es nur nicht 😃 (nicht böse gemeint).

Der gepostete Code von Taipi sieht schon ganz gut aus. Der wird das Notify einfach über alle Laufwerke gezogen. Reicht ja auch vollkommen aus. Das kompiliert bei dir natürlich so nicht, da du die Methoden noch definieren musst. Die kennt .NET so nicht, da es sich um direkte Win32 API Aufrufe handelt. Die Signaturen der Methoden kannst du auf PInvoke nachlesen.

14.08.2018 - 07:44 Uhr

Hi,

hier kann nicht SHCNF_IDLIST verwendet werden. Dieser Parameter sagt aus, dass in dwItem1 eine ITEMIDLIST Struktur erwartet wird. Sprich, ein IntPtr auf ein PIDL. Du gibt's aber einen konkreten Pfad rein (String). Du musst SHCNF_PATH verwenden. Wenn du unbedingt eine ITEMIDLIST benötigst, musst du dir diese über ILCreateFromPath besorgen.

Gruß
Khalid

10.08.2018 - 10:32 Uhr

Ja, genau. Ist die Oracle.ManagedDataAccess.dll

10.08.2018 - 09:39 Uhr

Ich würde auf die Managed Version der Oracle Treiber gehen. Dann hast du, bis auf die Managed DLL, keinerlei Abhängigkeiten mehr.

08.08.2018 - 07:38 Uhr

Ich komme aus der Finanzwelt und kann Abt da nur voll und ganz zustimmen. Gerade der Punkt "Allerdings könnte es dann auch zu Dateninkonsistenzen kommen, wenn eine Buchung, die zwei Konten betrifft, nur auf einem gelöscht wird", hat mich erzittern lassen 😃. Nie nie nie, werden Buchungen gelöscht! Sie werden storniert. Nur so bleibt alles konsistent.

08.08.2018 - 07:32 Uhr

Moin,

verwende Parameter: [Artikelserie] SQL: Parameter von Befehlen

Und trenne die Datenschicht von der UI: [Artikel] Drei-Schichten-Architektur

Gruß
Khalid

24.07.2018 - 16:27 Uhr

Du kannst DiskPart eine ScriptDatei mitgeben, in der mehrere Commands drin stehen und dann DiskPart mit "DiskPart /s ScriptDatei" aufrufen.

24.07.2018 - 13:58 Uhr

Ich verstehe ehrlich gesagt jetzt nicht genau, was du überhaupt vorhast?

Auf einem Remote Computer, wo die VHD liegt, komm ich so nicht ran

Ich würde gerne die vorhandenen Festplatten erweitern

Willst du jetzt eine physische Partition erweitern, oder eine virtuelle? Irgendwie widerspricht sich das gerade 😃

Bei virtuellen Platten/Partitionen einfach die entsprechenden APIs der jeweiligen Anbieter nutzen und bei physischen einfach DiskPart "fernsteuern". Warum dieses ganze mit Kanonen auf Spatzen schießen? Warum muss es unbedingt und zwanghaft in c# reinprogrammiert werden, wenn es schon gute und fertige Lösungen von MS selber gibt (DiskPart)?

27.06.2018 - 09:26 Uhr

wie in meinem ersten Post geschrieben, arbeite ich mit Scripts und Linked Server

Ups 😃

Dann verstehe ich es nicht ganz. Habe mal kurz ein Test gefahren

  • Quelle mySQL (4 CPU, 8 GB RAM, SSD)
    • Tabelle mit > 100mio Rows (davon aber nur ca. 4,5 mio selektiert)
  • Ziel MS SQL Express (2 CPU, 8 GB RAM, SSD)
    • Über Linked Server zum mySql

Ausgeführt über "SELECT * INTO Test FROM OPENQUERY(TEST_MYSQL, 'SELECT * FROM xxxx')"

Ergebnis: 4,5 mio Rows in 55min (wobei ich das schon erschreckend langsam finde, aber kann an den limitierten Testkisten liegen).

[Edit]:
Die Tabelle hat ca. 40 Spalten. Eingefügte Datenmenge sind knapp unter 1 GB. Bei den Daten handelt es sich um Laufdaten nach Datum.

Dein Bottleneck muss irgendwas anderes sein.

OK, gerade nochmal gelesen, dass du nur HDDs hast. Ich hingegen habe den Test auf SSDs gemacht. Aber selbst eine HDD liefert bei weitem mehr als 3 MB/s

26.06.2018 - 07:57 Uhr

Hast du denn schon mal den "klassischen" Weg über Kommandozeilen-Tools gemacht? Oder direkt im SQL Server den mySql Server als Linked Server angegeben?

Beiden dürfte immens schneller sein, als ein eigenes Programm welches die Daten migriert. Für Kommandozeile kann man bcp verwenden. Hier müsste man auf der mySql ein Dump in eine CSV Datei machen und diese per bcp wieder importieren.

Oder halt die mySql ODBC Treiber auf dem SQL Server installieren und dann per Linked Server migrieren.

Gruß
Khalid

26.06.2018 - 07:47 Uhr

Moin,

ich benutze Quartz in einigen Programmen von mir. Ich wüsste jetzt nicht, was da für ein Overhead entstehen soll? Meinst du den Ressourcenverbrauch? Der ist zu vernachlässigen.

Gruß
Khalid

14.06.2018 - 07:38 Uhr

Moin,

deaktiviere alle Constraints und droppe im Vorfeld alle Indizes. Nach dem Import alles wieder aktivieren und Indizes erstellen. Das dürfte einiges bringen.

[Edit]: Auf der MSSQL Seite natürlich 😃

Gruß
Khalid

02.05.2018 - 11:09 Uhr

Stimmt, ein eigener Zertifikatsstore wird dann ebenfalls dazu benötigt. Aber wie gesagt, dass ist im Privatbereich eigentlich nicht zu wuppen, bzw. wäre in meinen Augen massiv schwachsinnig 😃

Sollte den Threadersteller auch nur zeigen, dass sein Unterfangen eher nicht realisierbar ist (was auch gut ist).

02.05.2018 - 10:58 Uhr

Wenn du solch eine Überwachung im Netz haben willst, brauchst du schon eine Hardware-Firewall im professionellen Bereich wie z.B. eine FortiGate von FortiNet. Diese beherrschen auch SSL Inspection (sprich das Aufbrechen von SSL). Aber da kommen Kosten auf einen zu, die im Privatbereich eher unüblich sind.

Aber ansonsten hat es chilic schon auf den Punkt gebracht: Zum Glück gar nicht

28.04.2018 - 13:36 Uhr

Moin,

der Exchange Server bietet eine API an. Nennt sich EWS API. Dazu gibt es eine Menge Material am Netz.

Get started with EWS Managed API 2.0 client applications

Gruß
Khalid

26.04.2018 - 13:56 Uhr

Mittels des Interfaces IPreviewHandler kann man PDF Dateien in der eigenen Anwendung anzeigen. Voraussetzung ist eine Anwendung die ein Preview Handler für PDF Dateien bereitstellt (z.B. Adobe).

07.03.2018 - 09:29 Uhr

Was ich mich Frage, warum ist der Quellcode nicht inbegriffen? Alle Dienstleister die für uns extern etwas entwickeln, liefern auch immer den Quellcode mit. Alles andere wäre ja mal ziemlich bescheuert.

12.12.2017 - 11:25 Uhr

Heutige Spiele mit solch großen Karten werden meist prozedural erstellt und nur der Hash wird gespeichert (oder andere ähnliche Algorithmen). So, dass man vom Hash aus wieder auf die generierte Karte kommt. Anschließend müssen nur die Veränderungen gespeichert werden (das was Tapi88 schon geschrieben hat). So macht es z.B. auch Stellaris. Da ist ein Savegame nur wenige MB groß bei gigantischen Karten.

07.07.2017 - 12:53 Uhr

Warum erläutere ich dann bei der Ergebnis-Bekanntgabe 😃

Da bin ich ja mal gespannt 😃

07.07.2017 - 10:38 Uhr

Moin,

um den Screensaver zu deaktivieren wenn dieser läuft, könnte man folgendes probieren.

Entweder über SystemParametersInfo mittels SPI_SETSCREENSAVEACTIVE = true. Oder ab Win7 mittels PowerSetRequest mittels PowerRequestDisplayRequired.

Ob das aber wirklich funktioniert, keine Ahnung 😃

Gruß
Khalid

07.07.2017 - 09:00 Uhr

Moin,

bei den Build Systemen könntest du noch TeamCity aufnehmen. Meiner Meinung nach recht verbreitet.

Gruß
Khalid

16.02.2017 - 15:34 Uhr

Moin,

das müsste Keys.OemBackslash sein.

Gruß
Khalid

09.02.2017 - 10:45 Uhr

Mein Favorit ist und bleibt StructureMap. Mag vielleicht daran liegen, dass ich seit beginn an mit dem Ding arbeite. Hab aber noch nie was vermisst und bin sehr zufrieden mit dem Teil.