Visual Studio Einzug-Regeln

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Translating-IT.

    Visual Studio Einzug-Regeln

    Hallo,

    Ist es möglich eigene Regeln für die automatischen Einzüge in Visual Studio zu definieren?

    Wenn ich zum Beispiel mit dem xmlwriter code erstelle, wäre es nett, dass er einrückt, sobald WriteStartElement erkannt wird, und wieder zurückspringt, sobald WriteEndElement erkannt wird.

    Leider schreibt er alles unter einander, was die Programmierung von XML-Formularen stark erschwert, da man nicht wirklich weiß, auf welcher Ebene man sich gerade befindet.

    LG,
    Pascal
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.
    Hallo,

    ja - also ich hab es immer mit der XMLWriterSettings Klasse gemacht.
    Dort konnte man den ​Indent auf "true" setzen und die ​IndentChars auf die gewünsche Einzugslänge.

    Hier mal der Link zum MS Artikel: docs.microsoft.com/de-de/dotne…settings?view=netcore-3.1

    Und hier ein kleines Codebeispiel von der Seite:

    VB.NET-Quellcode

    1. XmlWriterSettings settings = new XmlWriterSettings();
    2. settings.Indent = true;
    3. settings.OmitXmlDeclaration = true;
    4. settings.NewLineOnAttributes = true;
    5. writer = XmlWriter.Create(Console.Out, settings);
    6. writer.WriteStartElement("order");
    7. writer.WriteAttributeString("orderID", "367A54");
    8. writer.WriteAttributeString("date", "2001-05-03");
    9. writer.WriteElementString("price", "19.95");
    10. writer.WriteEndElement();
    11. writer.Flush();


    Ich hoffe, dass konnte helfen.

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Ok, ich glaub, da habe ich mich jetzt falsch ausgedrückt. Das was Du
    verlinkst, ist die Einstellung für die fertige Datei. Ich bräuchte aber
    eine Einstellung, damit Visual Studio in der vb.Datei direkt die Einzüge
    im Code macht.

    bisher (bewußt ohne Code-Auswahl wegen Formatierungsübersicht):

    writer.WriteStartElement("LIEFERUNGEN_LEISTUNGEN_EIGENVERBRAUCH")
    writer.WriteStartElement("KZ000")
    writer.WriteAttributeString("type", "kz")
    writer.WriteString(KZ000)
    writer.WriteEndElement()

    writer.WriteStartElement("STEUERFREI")

    writer.WriteStartElement("KZ011")
    writer.WriteAttributeString("type", "kz")
    writer.WriteString(KZ011)
    writer.WriteEndElement()

    VST = "1ab3"

    writer.WriteStartElement("VST")
    writer.WriteString(VST)
    writer.WriteEndElement()

    writer.WriteStartElement("KZ020")
    writer.WriteAttributeString("type", "kz")
    writer.WriteString(KZ020)
    writer.WriteEndElement()
    writer.WriteEndElement()

    Gewünscht:

    writer.WriteStartElement("LIEFERUNGEN_LEISTUNGEN_EIGENVERBRAUCH")
    ---- writer.WriteStartElement("KZ000")
    ---- writer.WriteAttributeString("type", "kz")
    ---- writer.WriteString(KZ000)
    ---- writer.WriteEndElement()

    ----writer.WriteStartElement("STEUERFREI")

    -------- writer.WriteStartElement("KZ011")
    -------- writer.WriteAttributeString("type", "kz")
    -------- writer.WriteString(KZ011)
    -------- writer.WriteEndElement()

    --------VST = "1ab3"

    -------- writer.WriteStartElement("VST")
    -------- writer.WriteString(VST)
    -------- writer.WriteEndElement()

    -------- writer.WriteStartElement("KZ020")
    -------- writer.WriteAttributeString("type", "kz")
    -------- writer.WriteString(KZ020)
    ---- writer.WriteEndElement()
    writer.WriteEndElement()

    LG
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.

    Translating-IT schrieb:

    Gewünscht
    So geht das nicht.
    Im Quellcode ist der Einzug durch die Verschachtelungstiefe bestimmt, und und Dein Code hat da dieselbe Tiefe.
    In C# könntest Du das machen, indem Du einen Block generierst:

    C#-Quellcode

    1. {
    2. Code();
    3. }
    In VB gibt es so einen "leeren" Block leider nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod,

    Ja, ist mir klar, dass er dieselbe Tiefe hat. Ich wollte eher wissen, ob man diese Tiefe irgendwo selbst konfigurieren bzw. Trigger hinzufügen kann, z. B. wenn WriteStartElement dann +1, wenn WriteEndElement dann -1, oder so ähnlich.

    Das würde das Ganze etwas erleichtern.

    Den Trick für C# habe ich auch schon im Netz gefunden.

    Schade, dass das nicht möglich ist. Erweiterungen mit vordefinierten Regeln für den XmlWriter habe ich dazu auch keine gefunden bis jetzt. :(



    LG
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.
    @Translating-IT Vordefinierte Regeln für den XmlWriter gibt es nicht, das Konfigurieren der XmlWriterSettings sind doch nur 3 Zeilen Code.
    Wenn Du das mehrfach brauchst, kannst Du natürlich einen eigenen XmlWriter-Creater machen, in den Du das alles reinpackst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi Rod,

    Ja, das ist mir schon klar, das war aber nicht die Fragestellung. Die Settings habe ich eh schon eingebaut gehabt. Es geht aber hier rein um die Ansicht im Code der vb-Datei in Visual Studio.

    Ich habe aber schon eine Notlösung im Netz gefunden:

    Ich führe einfach selbst den Einzug mit "Tab" herbei.
    Sobald ich am Ende der Codezeile mit Enter zur nächsten Zeile wechsle, macht Visual Studio diesen Einzug rückgängig und ich mache dann wiederum mit "STR+Z" diese automatische Formatierung von VS rückgängig. So behalte ich den Einzug und habe während des Programmierens eine bessere Übersicht im Code.

    LG,
    Pascal
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.