Einleitung
AL-Programmierer, die auch RDLC-Berichte erstellen, werden es kennen: Arbeitet man parallel in VS Code und im in Visual Studio geöffneten RDLC-Layout, treten nach jedem neuen Build der BC-App verschiedene Fehler im Visual Studio auf.
Hintergrund ist, dass der AL Compiler bei jedem Build auch das DataSet_Result und die Parameter in den von den AL-Report-Objekten referenzierten Layout-Dateien aktualisiert. Zwar hat Visual Studio einen automatischen Reload-Mechanismus, um dies zu erkennen, nur leider funktionieren nach einem Reload einige Dinge in Visual Studio nicht mehr. Dies betrifft insbesondere das Property Grid, das bei Klick auf ein Control „hängen bleibt“ und nicht mehr die Eigenschaften des/der gewählten Controls anzeigt. Im ungünstigen Fall führt dies dazu, dass man unwissentlich Eigenschaften falscher Controls ändert und danach nicht mehr weiß, welche Controls das gewesen sind. Zwar lässt sich das Problem einmalig durch Speichern (<Strg>+<S>) beheben, aber das hilft eben immer nur für ein Mal.
Der offizielle Weg, dies zu lösen, ist, Visual Studio zu schließen und die Layout-Datei neu zu öffnen. Je nach Systemumgebung vergehen dabei aber viele Sekunden, die das ohnehin schon belastete Geduldskonto eines RDLC-Designers unnötig zusätzlich strapazieren.
In diesem Beitrag erläutere ich, wie sich das Problem mit ein klein wenig Einrichtungsarbeit sehr elegant lösen lässt. Und als kleines Extra bekommen wir dadurch noch einen zusätzlichen Vorteil: Im AL vorgenommene Änderungen an Labels (Parametern) und Columns (Feldern) stehen auf Tastendruck sofort zur Verfügung – genauer: nach ca. 1 Sekunde. Dies verbessert den Design-Workflow für RDLC-Berichte noch einmal ganz erheblich.
Idee
Die Idee ist ganz einfach: Nicht das ganze Visual Studio neu laden sondern lediglich die aktuelle Datei schließen und erneut öffnen. Legt man sich dies noch auf einen leicht greifbaren Keyboard-Shortcut, ist der Schmerz an dieser Stelle bereits beinahe abgestellt.
Ein Wort zur Verwendung noch vorab: Der hier zugewiesene Shortcut funktioniert nur dann, wenn der Fokus beim Dokument selber liegt. Er funktioniert also z.B. nicht, wenn der Fokus gerade im Property-Grid steht. Ein ggf. mehrmaliges Drücken von <Esc> bevor Sie den Shortcut anwenden, bringt einen aber schnell zum Dokument zurück.
Einrichtung
In älteren Visual Studio-Versionen (bis einschl. 2019) verwendete ich für diesen Trick noch die Microsoft Macros for Visual Studio-Extension. Seit Visual Studio 2022 wird diese jedoch nicht mehr unterstützt. Daher finden Sie nachstehend zwei Anleitungen.
Visual Studio 2026, 2022
Den eingestellten Support der Microsoft Macros for Visual Studio-Extension habe ich zum Anlass genommen, eine Visual Studio Extension zu erstellen, die die Installation nunmehr zu einem Kinderspiel macht.
Laden Sie einfach die RdlcRefresh.vsix herunter und installieren Sie sie durch Doppelklick auf die heruntergeladene Datei. In dem sich öffnenden Dialog wählen Sie aus, für welche Visual Studio-Versionen die Extension installiert werden soll. Das war’s.
Im Datei-Menü finden Sie anschließend den Menüpunkt Reload RDLC, der nur aktiv ist, wenn Sie sich in einer .rdlc-Datei befinden.

Hier ist bereits der Shortcut Strg+Y zugewiesen, so dass Sie sofort nach der Installation der Extension loslegen können.
Visual Studio 2019, 2017, 2015, 2013
Zunächst benötigen wir die Microsoft Macros for Visual Studio Extension. Laden Sie über diesen Link die Datei VSMacros.vsix herunter und führen Sie sie aus. Geöffnete Visual Studio-Instanzen sollten dafür geschlossen werden.
Wählen Sie nach der Installation im Menü Extras > Macros > Macro Explorer. Im Macro Explorer am rechten Fensterrand klicken Sie mit der rechten Maustaste auf den Wurzelknoten Macro Browser List und wählen aus dem Kontextmenü New Macro. Geben Sie dem neuen Makro einen Namen, z.B. „RDLCReload“.

Klicken Sie danach dieses Makro mit der rechten Maustaste an und wählen Sie aus dem Kontextmenü Öffnen. In den sich nun öffnenden Text-Editor geben Sie folgenden Code ein. Bitte ändern Sie an dem Code nichts und übersehen Sie dabei nicht die erste Zeile „/// …“. Hier müssen Sie IhrBenutzername noch ersetzen und ggf. den Pfad anpassen.
/// <reference path="C:\Users\IhrBenutzername\AppData\Local\Microsoft\VisualStudio\16.0_3fad93cb\Macros\dte.js" />
currFile = dte.ActiveDocument.FullName
dte.ExecuteCommand("Window.CloseDocumentWindow");
dte.Commands.Raise("{5efc7975-14bc-11cf-9b2b-00aa00573819}", 900, null, null);
dte.Documents.Open(currFile).Activate();
Anschließend werden Sie noch einen Shortcut zuweisen wollen. Für Rechtshänder eignet sich <Strg>+<Y> sehr gut, da er i.d.R. mit der linken Hand schnell erreicht werden kann, während sich die rechte Hand an der Maus festklammert. Eigentlich ist dieser Shortcut normalerweise mit der Funktion Redo belegt, diese wird aber im Berichts-Designer ohnehin nicht unterstützt. Damit der Shortcut aber wirklich nur im Berichts-Designer greift, setzen wir noch einen entsprechenden Scope.
Klicken Sie im Menü Extras > Optionen und tippen Sie in das Suchfeld Tastatur oder Keyboard ein. Klicken Sie auf den gefundenen Eintrag, um den Keyboard Shortcut Editor von Visual Studio anzuzeigen.
In das Suchfeld Befehle mit folgendem Inhalt anzeigen tippen Sie Macro und wählen aus der Liste darunter den Eintrag Extras.MacroCommand1. Im Feld Neue Tastenkomb. verwenden in wählen Sie Berichts-Designer (engl.: Report Designer), setzen dann den Cursor in das Feld Tastenkombination drücken und drücken (nicht eintippen) den Shortcut Strg+Y oder einen anderen gewünschten Shortcut.

Vergessen Sie abschließend nicht, auf Zuweisen rechts daneben zu klicken und schließen Sie den Dialog mit OK.
Zusammenfassung
Der Workflow im RDLC-Berichts-Design hat sich gegenüber dem alten Weg, wie er noch in C/SIDE war, schon deutlich verbessert. Geblieben sind jedoch die alten Fehler des Berichts-Designers in Visual Studio, die sich besonders störend nach dem automatische Neuladen der Datei durch Änderungen im Hintergrund auswirken. Mit dem hier beschriebenen Trick muss man nur noch daran denken, kurz das Layout neu zu laden und schon wird man Visual Studio nicht mehr während des Berichts-Designs schließen müssen. Damit ist der Report Design Workflow erneut ein Stück besser geworden.