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 dannoe
Thema: Build mit Jenkins funktioniert nicht: kein .NET Framework
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Dann ist das y-Projekt im neuen SDK-Format. (siehe Übersicht: .NET SDKs für Projekte (Projektdateien))
Ich vermute, dass MsBuild die Projektdatei dann an "dotnet build" übergeben möchte und deswegen auf einen Fehler stößt, weil das .NET SDK nicht installiert ist.
Warum der manuelle Aufruf durch die Kommandozeile funktioniert, könnte folgende Unterschiede haben:

- Unterschiedliche MsBuild Versionen (z. B. durch unterschiedliche PATH Variablen bei Jenkins vs. Benutzer)
- Umgebungsvariablen die das Verhalten von MsBuild steuern

Kann sonst nicht wirklich weiterhelfen, aber vielleicht hilft das beim Recherchieren.

PS: Als Workaround könntet ihr natürlich auch einfach das .NET SDK auf der Jenkins Maschine installieren.

Thema: Build mit Jenkins funktioniert nicht: kein .NET Framework
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Sind beides .NET Framework Projekte? Oder ist eines vielleicht ein .NET Core/5/6/Standard Projekt?

Kenn mich mit Jenkins nicht aus, aber gibt es da kein Debug Mode, damit die Aufrufe inkl. Parameter im Log landen?

Thema: Drittanbieter Assembly laden
Am im Forum: Grundlagen von C#

Bist du dir sicher, dass deine Pfadangabe stimmt? Aus Versehen den falschen Pfad kopiert?
Hat die DLL vielleicht andere Abhängigkeiten die nicht aufgelöst werden können? -> Dependency Walker

Ansonsten könntest du in der Installationsroutine deiner Software, nach der Drittanbieter Software suchen (vielleicht trägt die sich in die Registry ein?) und dann einen Symlink in deinem Installationsordner erstellen der auf die Assembly der Drittanbieter Software zeigt.

Thema: Software zum Testen
Am im Forum: Smalltalk

Also ich lese auf der Webseite "TRY 30 DAYS FREE" und "START FOR FREE"

Thema: Klasse T in generischer Methode instanziieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Im Übrigen werden die Methoden durch ihr Präfix im Editor bei der Codevervollständigung alle schön gebündelt angezeigt. Auch ein Vorteil.
Sofern du die Methoden manuell aufrufst dann stimmt das. Ich bin davon ausgegangen, dass du die Methoden nur via Reflection aufrufst.
Zitat
Für diesen einen Fall nutzen uns die Attributen leider nichts: [...]
Warum die Attribute dabei nichts nutzen sollen, hast du aber nicht beschrieben.

Nach deiner ausführlicheren Beschreibung, würde ich es jetzt so umsetzen:


[File("Parts_22")]
public class FilePostProcessor_Parts_22 : BaseProcessor
{
    [PostProcess("PartNumber")]
    public static bool TransformPartNumberIntoXyz() 
    {
        // do something
    }

    [PostProcess("Art2NoH")]
    public static bool TransformArt2NoHIntoZyx() 
    {
        // do something
    }
}

BaseProcess ist deine Basisklasse mit der gemeinsamen Funktionalität.
Ein weiterer Vorteil wenn du die Attribute verwendest:
- Du kannst einen Roslyn Analyzer bauen, der bei vorhandenem PostProcess Attribute die Methodensignatur erzwingt.
- Du kannst zur Runtime überprüfen ob alle Methoden die das Attribute haben, auch die richtige Signatur haben.
In deinem Fall kann es schnell passieren, dass eine Signatur falsch ist und das fällt dann fast nicht auf. (Außer dass die Nachverarbeitung des Feldes nicht stattfindet)

Ich hab das jetzt nur der Vollständigkeit halber geschrieben. Vielleicht hat mal jemand ein ähnliches Problem und sucht etwas Inspiration.

Thema: Klasse T in generischer Methode instanziieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wenn es einen guten Grund gibt, dass die Methoden static sind, dann muss er aber noch etwas warten. Static Interface Member sind erst in der Preview.

Thema: Klasse T in generischer Methode instanziieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also ich würde lieber das hier wählen


public class KlasseA
{
    [PostProcess("PartNumber")] // 
    public static bool TransformPartNumberIntoXyz() 
    {
           // Methode hat einen sprechenden Namen bzw. es ist möglich ihr einen sprechenden Namen zu geben
           // Standard .NET Namenskonventionen wurden eingehalten
    }
}

statt diesem


public class KlasseA
{
    public static bool nvPartNumber() 
    {
           // nv steht vermutlich für Nachverarbeitung (Englisch und Deutsch gemischt 👎)
    }
}

Thema: Klasse T in generischer Methode instanziieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mit dieser Methode bzw. einer Überladung davon: https://docs.microsoft.com/en-us/dotnet/api/system.activator.createinstance?view=net-6.0

Thema: Dictionary wird Exception beim Einfügen vielen Datensätze
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Verwendest du .NET Framework? Maximale Objektgröße ist dort standardmäßig (auch in 64 Bit) 2 GB

Versuch mal in der app.config:


<configuration>
  <runtime>
    <gcAllowVeryLargeObjects enabled = "true" />
  </runtime>
</configuration>

Thema: Einzigartigkeit von gewissen byte-Bereichen für ID Generierung
Am im Forum: Grundlagen von C#

Ist es eine Anforderung, dass die Dateien nicht verändert werden? Wenn nicht, könntest du auch Meta-Informationen mit z.B. exif in die Dateien schreiben.
Wenn du dann einfach eine GUID in die Meta-Informationen der Datei schreibst, kannst du die GUID verwenden um Sie mit deinen Informationen zu verknüpfen.

Thema: Async Task-Synchronisation
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich weiß nicht ob ich dein Bedenken richtig verstanden habe, aber:

Du hast im State noch den Zähler, d.h. wenn zwei identische Objekte freigeben wollen, dann ist der Zähler auch auf 2 und muss erst auf 0 fallen, bevor ein anderes Objekt mit EnterAsync "eintreten" darf. D.h. bevor nicht jedes Objekt A den Zähler dekrementiert (und somit freigegeben) hat, kann auch kein Objekt B in den Channel kommen.

Thema: XML-Attribute eines bestimmten Knotens auslesen
Am im Forum: Datentechnologien

mit xPath z. B. so:


xDoc.SelectSingleNode("order/props/@version").Value

Thema: Radio Button als Gruppe abfragen
Am im Forum: Grundlagen von C#

Es braucht nicht jeder RadioButton einen eigenen Eventhandler. Einfach den selben nehmen und durch den Code von Th69 funktioniert es dann trotzdem.
Eventhandler nur an einen Teil von (RadioButton)-Controls hängen wäre für mich ein Code-Smell.

Thema: .txt Datei Filtern und die wichtigen daten extrahieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Falls deine ganzen regulären Ausdrücke tatsächlich nur aus Literalen bestehen und kein regulären Ausdrücke enthalten, brauchst du die Regex Klasse auch nicht.

Statt



string wetter = "wetter: x";
string wetter2 = "wetter: ox";
Regex regexwetter = new Regex(wetter);
Regex regexwetter2 = new Regex(wetter2);
if (regexwetter.IsMatch(s)|regexwetter2.IsMatch(s))
{
    ApiRequest apiRequest2 = new ApiRequest();
    apiRequest2.PostRequest(Nameof, "pink", Beschreibung, tempTime2);
    break;
}
kannst du auch


string wetter = "wetter: x";
string wetter2 = "wetter: ox";
if (s.IndexOf(wetter) ≥ 0 || s.IndexOf(wetter2) ≥ 0)
{
    ApiRequest apiRequest2 = new ApiRequest();
    apiRequest2.PostRequest(Nameof, "pink", Beschreibung, tempTime2);
    break;
}
schreiben.

Hinweis: Es gibt außerdem einen Unterschied zwischen dem
|| Operator: https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-or-operator-
und dem
| Operator: https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-or-operator-

Thema: Vergleich mehrere DGV Einträge
Am im Forum: Grundlagen von C#

Deine Schleife wird für die letzte Zeile nicht ausgeführt. Du hast als Bedingung i < dataGridView1.RowCount - 1 angegeben.

Thema: Via cmd Befehl in laufendes Programm schreiben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Suchst du vielleicht eine REPL (Read-Eval-Print-Loop)?
Also eine Schleife (Loop), in der du immer wieder Eingaben vom Benutzer abfragen kannst (Read), diese verarbeitest (Eval) und anschließend das Ergebnis ausgibst (Print).

Thema: Code soll erst auf Devops eingecheckt werden, wenn er buildet.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Würde es dir reichen wenn der Code nur in den Hauptbranch gemergt werden darf, wenn er buildet?
Dann musst du lediglich:
- Pipeline erstellen die den Code buildet
- im Haupt-Branch die Policy aktivieren, dass die vorher erstellte Pipeline erfolgreich durchlaufen werden muss

Schon kannst du nur noch Pull Requests mit "buildbarem" Code abschließen.

Thema: error MSB4025: The project file MyProject.csproj could not be loaded. '.', hexadecimal value 0x00
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich hatte solche NUL Kontrollzeichen schon öfters in Dateien wenn ich von alten Windows Servern (2008 und abwärts) etwas über RDP via Copy&Paste auf aktuelle Server kopiert habe.
Kann mich aber den vorherigen Aussagen auch nur anschließen bzgl. Git/Versionsverwaltung.

Thema: In eine Bluetooth characteristic schreiben
Am im Forum: Rund um die Programmierung

Ich kenn mich zwar nicht mit dem Bluetooth Details aus, aber in dem Quellcode siehst du wie das Tag der Combobox gesetzt wird: https://github.com/microsoft/Windows-universal-samples/blob/main/Samples/BluetoothLE/cs/Scenario2_Client.xaml.cs

Das musst du halt ähnlich bei dir machen. (Nur halt ohne Combobox)
Also alle Services (sind vermutlich die Bluetooth Geräte?) via bluetoothLeDevice.GetGattServicesAsync(BluetoothCacheMode.Uncached); holen und dann halt den richtigen in der/dem Liste/Array auswählen.

Zitat
Im Microsoft Beispiel wird dieser Wert folgendermaßen erzeugt:
Für die Zukunft solltest du die erwähnten Beispiele verlinken, dann müssen die Helfer nicht selbst danach suchen.

Thema: F5-Tastendruck an den Prozess 'chrome.exe' senden?
Am im Forum: Rund um die Programmierung

Ich rede vom Output Fenster in Visual Studio wenn du die Anwendung über Visual Studio startest. Dort funktioniert es mit folgendem Code:


private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("test");
            Debug.WriteLine("test2");
        }

Ergebnis: siehe Anhang


Für die PowerShell bzw. cmd musst du den "Output type" deiner Anwendung auf "Console Application" stellen.
Rechtsklick aufs Projekt -> Properties -> Application -> Output type

Es öffnet sich dann aber auch ein zusätzliches Konsolenfenster wenn du die Anwendung per Doppelklick startest.
Edit: Ob es noch andere Nachteile gibt, musst du selbst recherchieren.

Thema: F5-Tastendruck an den Prozess 'chrome.exe' senden?
Am im Forum: Rund um die Programmierung

Was erwartest du denn bei einem Console.WriteLine wenn du eine GUI offen hast?
Wenn du in die Debug Console von VS schreiben willst, musst du Debug.WriteLine verwenden.

Thema: Oracle Fehlermeldung mit FROM ORA-00923
Am im Forum: Datentechnologien

In deinem Query in C# schreibst du "product l".
In deinem Beispiel Query, den du direkt ausgeführt hast, schreibst du "lproduct l".

Liegt hier der Fehler? Falls ja, solltest du langsam mal Feierabend machen

Thema: Oracle Fehlermeldung mit FROM ORA-00923
Am im Forum: Datentechnologien

Also wenn du z.B. diese zwei Zeilen konkatenierst:

Zitat
+ "to_char(sysdate,'HH24:MI') AS Erstellzeit"
+ "From lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r"

Dann kommt doch folgendes raus oder:
Zitat
to_char(sysdate,'HH24:MI') AS ErstellzeitFrom lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r

Und "ErstellzeitFrom" ist glaube ich nicht gewollt oder?

Thema: Oracle Fehlermeldung mit FROM ORA-00923
Am im Forum: Datentechnologien

Schau dir im Debugger mal den Inhalt deines cmd.CommandText an. Fällt dir dann bestimmt schnell auf

Tipp: Leerzeichen

Thema: Wie das Gerät zur Audiowiedergabe ändern?
Am im Forum: Rund um die Programmierung

Unter Windows 10 kann ich, sofern ich mehrere Geräte angeschlossen habe, unter dem Sound Icon in der Taskbar einfach das Standardgerät wechseln.
Mein privater Rechner hat jetzt leider nur eins, aber ich habe im Screenshot die Stelle markiert, bei der ich es normalerweise wechseln kann.

Thema: Email versenden, am besten mit dem Standard mail client
Am im Forum: Rund um die Programmierung

Der Fehler "Application specific password required" sagt dir schon dass du dir ein Passwort für die Anmeldung generieren lassen musst. Du kannst deine Google Kontodaten nicht für IMAP verwenden.
siehe Sign in with App Passwords - Google Account Help

Thema: Stop bei Ausnahmen trotz try catch
Am im Forum: Rund um die Programmierung

Du hast angehakt, dass er beim Auslösen dieser Ausnahmen anhalten soll. (siehe Screenshot)

Über "Debug" -> "Windows" -> "Exception Settings" kannst du das auch gesammelt einstellen.

Thema: WPF-Window immer über(!) der Taskbar
Am im Forum: GUI: WPF und XAML

Die Frage betrifft zwar c++, aber gilt natürlich trotzdem: is-task-manager-a-special-kind-of-always-on-top-window-for-windows-10

Thema: Sicheres, lokales Passwort
Am im Forum: Grundlagen von C#

Ich glaube einer von uns hat die Frage falsch verstanden.

So wie ich es lese, hat Abraham eine Funktion die seine Datenbank verschlüsselt und entschlüsselt (mit einem festen Schlüssel, ungleich dem Masterpasswort) und er möchte dass die Datenbank nur mit einem bestimmten Passwort entschlüsselt werden kann. Um das zu erreichen hat er deswegen ein Passwort als Hash in einer Datei abgelegt. Wenn jetzt jemand die Datenbank entschlüsseln möchte, prüft er in seinem Programm ob das eingegebene Passwort gleich dem Hash in der Datei entspricht. Falls dem so ist dann stößt er den Entschlüsselungs-Mechanismus mit seinem festen Schlüssel (nicht dem Passwort) an.

D.h. in meinen Augen hat er nur nicht daran gedacht, dass die Verschlüsselungsfunktion selbst, das Masterpasswort verwenden kann. Dadurch muss auch nirgendwo das Masterpasswort gespeichert werden.

Zitat von Abt
Zitat von dannoe
Wenn dann jemand versucht die Passwortdatenbank mit einem falschen Passwort zu entschlüsseln, dann kommt nur Kauderwelsch raus.
Das ist ein Mechanismus zur Abwehr einer Brute-Force-Methode
Mir fällt leider der Name dazu nicht ein.
Nein, ich meine eine ganz normale symmetrische Verschlüsselung. Wenn ich etwas mit einem Schlüssel A verschlüssle und es versuche mit Schlüssel X zu entschlüsseln, dann kommt halt irgendwas raus.
Du meinst vermutlich die "Key derivation", dabei wird X-mal der Schlüssel "verformt" um so die benötigte Entschlüsselung bzw. Rechenzeit zu erhöhen.

Thema: Sicheres, lokales Passwort
Am im Forum: Grundlagen von C#

Du musst deine Passwortdatenbank mit dem Masterpasswort (bzw. mit einem Hash des Passworts) verschlüsseln, dann kann keiner irgendwas austauschen.
So macht es bspw. auch KeePass. (Ein Open Source Passwortmanager geschrieben in C#)

Wenn dann jemand versucht die Passwortdatenbank mit einem falschen Passwort zu entschlüsseln, dann kommt nur Kauderwelsch raus.