VS Code
Hier gibt es einige Hinweise, die das Arbeiten mit VS Code erleichtern können. Dieses Video von den TechDays bietet einen guten Gesamtüberblick: BC TechDays 2022 - Being more efficient with VS Code - YouTube
Workspaces
VS Code Workspaces ermöglichen es, mehrere Projekte oder Ordner in einer einzigen VS Code Instanz zu verwalten. Dies ist besonders nützlich bei der AL-Entwicklung, wenn man mit mehreren Business Central Projekten gleichzeitig arbeitet.
Was ist ein Workspace?
Ein Workspace ist eine VS Code Konfigurationsdatei (.code-workspace), die eine oder mehrere Ordner sowie Editor-Einstellungen speichert. Ein Workspace ermöglicht es:
- Mehrere Ordner/Apps in einem VS Code Fenster zu öffnen
- Unterschiedliche Einstellungen pro Workspace (statt global)
Workspace erstellen
- Über das Menü: File → Add Folder to Workspace (Ordner hinzufügen)
- Mehrere Ordner hinzufügen: Wiederholung von Schritt 1 für jeden Ordner
- Workspace speichern: File → Save Workspace As... →
.code-workspaceDatei wählen
Alternativ kann man eine .code-workspace Datei manuell erstellen:
{
"folders": [
{
"path": "path/to/project1",
"name": "Project 1"
},
{
"path": "path/to/project2",
"name": "Project 2"
}
],
"settings": {
"al.codeAnalyzers": ["${AL:AnalyzersFolder}/**/*.dll"],
"[al]": {
"editor.defaultFormatter": "ms-dynamics-smb.al",
"editor.formatOnSave": true
}
}
}
Workspace-spezifische Einstellungen
Einstellungen im Workspace überschreiben globale Einstellungen. Dies ist hilfreich für:
- Projekt-spezifische Code Analyzer: Unterschiedliche Analyzer pro Projekt
- Workspace-spezifische Extensions: Extensions nur für diesen Workspace aktivieren
- Unterschiedliche Formatierungsregeln: Verschiedene Coding Standards pro Projekt
Einstellungen können in settings.json des Workspaces oder über UI konfiguriert werden.
Workspace öffnen
- Über File Menu: File → Open Workspace from File →
.code-workspaceDatei wählen - Über Command Palette:
STRG + SHIFT + P→ "Workspaces: Open Workspace" eingeben - Über Dateiexplorer:
.code-workspaceDatei doppelklicken
Best Practices
- Workspace pro Repository: Ein Workspace pro Git Repository halten
- Workspace Datei in Repository:
.code-workspaceDatei in das Repository committen, damit alle Entwickler die gleiche Konfiguration haben
Keyboard Shortcuts
Eine von VS Code veröffentlichte Auswahl verschiedener Shortcuts gibt es hier: keyboard-shortcuts-windows.pdf
Darüber hinaus sind folgende Shortcuts besonders relevant:
STRG + SHIFT + P(alternativF1) → Command PaletteSTRG + SHIFT + K(alternativSTRG + ENTF) → Eine ganze Zeile löschenALT + ↑/↓→ Eine ganze Zeile nach oben/unten verschiebenALT + SHIFT + ↑/↓→ Eine ganze Zeile nach oben/unten kopierenALT + ←/→→ (Alt gedrückt halten) Lässt den Cursor an die vorherigen Positionen springen„Ein markierter Text“ + STRG + D→ Multicursor: Mit jedem wiederholten Klicken des „D“s (STRG bleibt gedrückt) wird ein weiterer gleicher Text markiert; sehr nützlich auch in der Übersetzungsdatei, wenn die Übersetzung im Comment gepflegt ist.F2: Umbenennen von Variablen bspw. in Funktionen- „v-full“ (Shortcut aus der Extension AL Variable Helper): Bei Variablenbenamung schlägt v-Full den richtigen Namen vor.
- Beispiel: Beim Anlegen von Variablen in dem "var"-Block einer Funktion genügt es zunächst einfach nur "v: Record Item" zu schreiben. Springt man nun zurück zum "v" kann mit "STRG+Leertaste" ein Submenü geöffnet werden und "vfull" ausgewählt werden. Dieses führt dazu, dass aus "v: Record Item" → "Item: Record Item".
STRG + #→ Ganze Zeile auskommentierenSHIFT + ALT + R→ Datei in FileExplorer öffnenSTRG + Bild↑undSTRG + Bild↓→ Durch die Editoren in VS Code navigieren (alternativ mit ALT + 1,2,3... direkt auf den Editor wechseln)„Ein markierter Text“ + STRG + "→ Markierter Text wird damit direkt in Gänsefüßchen gesetzt„Ein markierter Text“ + STRG + '→ Markierter Text wird damit direkt in Hochkommata gesetzt
Erweiterungen
Über die VS Code Funktion Developer: Show running Extensions können die gerade aktiven Extensions inkl. derer Ladezeiten beauskunftet werden.
Schadhafte VS Code Extensions
VS Code Extensions sind nicht immer sicher und können Schadsoftware beinhalten. Selbst Extensions von verifizierten Publishern wurden bereits erwischt. Achtet deshalb darauf was ihr installiert. Stellt euch deshalb immer die Frage. Braucht ihr diese Extension und könnte diese ein Sicherheitsrisiko darstellen?
Zur Verifizierung muss ein Publisher mindestens eine Extensions seit 6 Monaten veröffentlicht haben und eine Domain angeben, welche auch seit mindestens 6 Monaten registriert ist. Erst dann kann man vom Marketplace Team überprüft und verifiziert werden.
- Empfehlung
-
Weitere:
- GitHub Copilot
- GitHub Copilot Chat
- AL Object ID Ninja
- Poedit (Übersetzungstool, alternativ zu NAB AL Tools)
-
AL Extension Pack Das AL Extension Pack von Waldos beinhaltet eine vielzahl von Erweiterungen, die für die AL Entwicklung sinnvoll sind. Darunter sind allerdings auch Erweiterungen, die ggf. nicht benötigt oder verwendet werden und den Editor belasten können. Nicht benötigte Erweiterungen aus dem Extension Pack sollten deaktiviert bzw. deinstalliert werden.
MCP-Server
Was ist ein MCP-Server?
MCP (Model Context Protocol) ist eine offene Schnittstelle, über die KI-Clients wie GitHub Copilot zusätzliche Tools, Daten und Prompts erhalten. Ein MCP-Server liefert z. B. AL-Symbolinformationen, Azure DevOps Work Items oder die Microsoft-Learn-Dokumentation direkt in den Chat.
Wichtig: Ein MCP-Server ist kein Datenformat, sondern ein Programm. Lokale MCP-Server werden als npm- oder NuGet-Paket heruntergeladen und laufen anschließend mit den Rechten des angemeldeten Entwicklers.
Nicht jeder MCP-Server ist vertrauenswürdig
Ein bösartiger oder kompromittierter MCP-Server kann:
- Vertrauliche Daten auslesen und nach außen senden: Quellcode, Kundendaten,
.env-Dateien, Tokens und Zugangsdaten. - Code ausführen: beliebige Befehle im Kontext des Entwicklers, inkl. Zugriff auf Netzlaufwerke.
- Verbundene Systeme nutzen: Zugriff auf Azure DevOps, Git oder Business Central mit euren Berechtigungen.
- Den Agenten manipulieren (Prompt Injection): Manipulierte Tool-Beschreibungen oder Inhalte (z. B. aus einem Work Item) können Copilot zu unerwünschten Aktionen anweisen.
- Später bösartig werden: Ein harmloses Paket kann in einer neuen Version kompromittiert sein (Supply-Chain-Angriff).
Deshalb gilt: nur freigegebene MCP-Server aus der internen Registry verwenden.
Wo finde ich MCP-Server und installiere diese?
Eigene MCP-Einträge werden abgelöst
Die bisher manuell eingerichteten MCP-Server werden schrittweise in die interne Registry überführt. Neue und bereits überführte MCP-Server können von dort installiert werden. Während dieser Übergangsphase können vorhandene Einträge in der mcp.json noch bestehen bleiben.
Zu einem noch nicht festgelegten Stichtag wird die Nutzung der internen Registry per zentraler VS-Code-Policy verbindlich. Ab diesem Zeitpunkt funktionieren manuell gepflegte Einträge und Installationen aus der öffentlichen MCP-Gallery nicht mehr. Die benötigten MCP-Server müssen dann über die interne Registry installiert sein. Vor der Umstellung die Benutzer- und Workspace-Konfiguration prüfen. Alte Einträge erst entfernen, wenn der jeweilige MCP-Server über die interne Registry installiert wurde:
- Benutzerebene: STRG + SHIFT + P → `MCP: Open User Configuration`
- Workspace-Ebene: `.vscode/mcp.json` im Projekt
Die interne MCP-Registry ist ein kuratierter Katalog freigegebener MCP-Server. VS Code bezieht die Liste über die Policy aus dieser Registry statt aus der öffentlichen Gallery. Die Registry ist dabei nur der Katalog. Sie liefert die Installations- und Verbindungsinformationen, betreibt die MCP-Server aber nicht selbst.
Voraussetzungen
- npm und
npx: Node.js - NuGet und
dnx: .NET SDK - Remote-MCP-Server: keine lokale Runtime. Je nach Server ist eine Anmeldung nötig.
Für NuGet-MCP-Server aus einem privaten Azure-Artifacts-Feed kann zusätzlich der Credential Provider erforderlich sein. Dieser kann mithilfe des folgenden Befehls installiert werden:
dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json
Weitere Voraussetzungen, zum Beispiel Power BI Desktop oder ein gültiges AL-Projekt, stehen beim jeweiligen MCP-Server.
Installation:
- Erweiterungsansicht öffnen:
STRG + SHIFT + X - Suchfilter
@mcpeingeben (optional mit Suchbegriff, z. B.@mcp devops) → es erscheinen alle freigegebenen MCP-Server - Gewünschten MCP-Server auswählen und Installationsziel wählen:
- Install → Benutzerprofil, gilt für alle Projekte
- Install in Workspace → nur für das aktuelle Projekt
- Copilot Chat im Agent-Modus öffnen. Die Tools stehen danach im Tool-Picker bereit
Die mcp.json muss dabei niemand von Hand schreiben. VS Code trägt den Server automatisch ein: bei Install in die Benutzer-mcp.json (%APPDATA%\Code\User\mcp.json), bei Install in Workspace in die .vscode/mcp.json des Projekts.
Bei der Nutzung
- Inputs: Manche MCP-Server erwarten beim ersten Start Eingaben, z. B. die Azure-DevOps-Organisation oder die Business-Central-Umgebung. VS Code fragt diese Werte ab und legt sie als
inputsin dermcp.jsonab. Die Eingabe-IDs sind je Server eindeutig benannt (z. B.ado-organization,bcs-environment), damit sich mehrere MCP-Server nicht gegenseitig überschreiben. - Anmeldung: Remote-Server benötigen häufig einen zusätzlichen OAuth-Login im Browser.
Best Practices
- Nur nutzen, was gebraucht wird: Jeder aktive MCP-Server vergrößert die Angriffsfläche und belegt Kontext des Agenten. Nicht benötigte Server deaktivieren.
- Teamweite Konfiguration bewusst über den Workspace: Der Standardweg Install schreibt nur in das eigene Benutzerprofil. Soll ein MCP-Server für alle im Projekt gelten, gezielt Install in Workspace wählen und die
.vscode/mcp.jsonins Repository committen. - Keine Secrets in der
mcp.json: Tokens und Zugangsdaten gehören ininputsoder in Umgebungsvariablen. Im Klartext committen sollte man sie nie. - Agent-Aktionen prüfen: Schreibende Tools (Dateien ändern, Work Items anlegen, Pipelines starten) nicht blind bestätigen; automatische Bestätigung für schreibende Tools vermeiden.
Fehleranalyse
| Symptom | Prüfung |
|---|---|
| Server startet nicht | MCP: List Servers → Status, Neustart und Fehlerausgabe prüfen |
| Tools werden nicht geladen | In Copilot Chat Configure Tools öffnen und Update Tools ausführen. Falls nötig, den MCP-Server anschließend über MCP: List Servers neu starten. |
| Fehlermeldungen zu alten Einträgen | mcp.json auf Benutzer- und Workspace-Ebene bereinigen |
Hilfe bei Problemen
Sollten Probleme weiterhin bestehen und nicht lösbar sein, meldet euch gerne bei Hermann Wessel oder Oliver Fox. Hilfreich sind dabei der Name des MCP-Servers, die Installationsart (Benutzer oder Workspace) und die Fehlerausgabe aus MCP: List Servers.
Neue MCP-Server beantragen
Wenn ihr einen MCP-Server benötigt, meldet euch mit einem Link zum Tool bei Hermann Wessel oder Oliver Fox.