Dynamics 365 Blog

Best-Practice-Prüfungen über Kommandozeile ausführen

Üblicherweise lässt man die Best-Practice-Prüfungen ja beim Build eines Projektes/einer Solution mitlaufen. Ab und an kann es aber recht praktisch ein, diese auch getrennt von einem Build zu starten.

Dafür bietet uns Microsoft das XppBp-Tool an, siehe https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-tools/author-best-practice-rules (ganz unten).

Dieses Tool liegt im PackagesLocalDirectory\bin-Verzeichnis und kann exemplarisch wie folgt verwendet werden:

Xppbp.exe 
    -module:MyModel 
    -model:MyModel 
    -metadata:"C:\AOSService\PackagesLocalDirectory" 
    -all

 
 
 

Dynamics Application checker installieren und einsetzen

Durch einen Kollegen bin ich auf den Dynamics Application Checker aufmerksam gemacht worden, der dazu verwendet werden kann, erweiterte Best-Practice-Prüfungen zu implementieren.

Die dafür verwendeten XQuery-Dateien können auf GitHub heruntergeladen werden. Wie man diese einsetzt, versuche ich hier zu beschreiben.

  1. Installation von BaseX (und ggf. Java)
    https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-tools/install-basex%C2%A0%C2%A0?tabs=admin
     
  2. Herunterladen und Entpacken der Dateien von GitHub
    https://github.com/microsoft/Dynamics365FO-AppChecker
    Die Dateien müssen ins repo-Verzeichnis von BaseX, z.B. C:\Program Files (x86)\BaseX\repo, entpackt werden
     
  3. Erstellen eines Deployable packages
    In Visual Studio unter Dynamics 365 > Deploy > Create Deployment Package das gewünschte Model auswählen und die Option Run Application checker auswählen:
    Create Deployment Package
     
  4. Ergebnis prüfen
    Nun sollten in der ErrorList entsprechende Einträge auftauchen, soferne BP-Abweichungen festgestellt wurden.
    Error list

    Zusätzlich wird im Packages-Verzeichnis eine Datei AppCheckerResult.xml abgelegt, auch dort können die erkannten Abweichungen eingesehen werden.
     

 
 
 

Fehler "An error occurred writing to Azure storage" beim Hochladen von Dateien auf einer Entwicklungsinstanz

Image upload failsWer auf einer Dynamics 365 for Finance and Operations-Entwicklungs-VPC beim Hochladen von Dateien - beispielsweise unter Product information management > Products > Change image - die folgende Fehlermeldung bekommt, sollte den Azure storage emulator prüfen.

An error occurred writing to Azure storage.

Der Azure storage emulator ist wahrscheinlich installiert, aber u.U. nicht gestartet.

Starten des Azure storage emulators

Um den Azure storage emulator zu starten sind folgende Schritte erforderlich:

  • Kommandozeile als Administrator starten
  • In den Pfad C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator wechseln
  • AzureStorageEmulator.exe start

 
 
 

ValidateWrite mit Hilfe eines Events in einer Augmentation-Klasse erweitern

Im folgenden Beitrag möchte ich zeigen, wie man mit Hilfe eines Events eine Methode einer Tabelle erweitern kann.

Nachdem man sich das gewünschte Projekt erstellt/geöffnet hat kann man über das Kontextmenü des Projektes unter Add > New item eines neues Objekt vom Typ Class erstellen. Dieser Klasse gibt man noch einen Namen, wichtig dabei ist die Endung _Extension.

Screenshot


 
 
 

Insert-Methode erweitern mit Hilfe eines Chain of command in einer Augmentation-Klasse

In diesem Beitrag möchte ich zeigen, wie man mit Hilfe von Chain of command Pre- oder Post-Events ablösen kann.

Nachdem man sich das gewünschte Projekt erstellt/geöffnet hat kann man über das Kontextmeü des Projektes unter Add > New item eines neues Objekt vom Typ Class erstellen. Dieser Klasse gibt man noch einen Namen, wichtig dabei ist die Endung _Extension.

Screenshot


 
 
 

Standard-Model für neue Projekte im Visual Studio festlegen

Unter C:\Users\DeinBenutzername\Documents\Visual Studio 2015\Settings liegt eine XML-Datei namens DefaultConfig.xml.

In dieser Datei kann man im Knoten DefaultModelForNewProjects ein Model eintragen.

Hier muss der Name des Models eingetragen werden, nicht der Anzeigename.


 
 
 

Lookup eines StringControls überschreiben

Der folgende Code soll demonstrieren, wie man ein daten-ungebundenes StringControl mit einer Lookup-Funktionalität ausstatten kann.

[Control("String")]
class FormStringControl1
{
    public void lookup()
    {
        //super();
        SysTableLookup systableLookup =
            SysTableLookup::newParameters(tableNum(CustGroup), this);

        systableLookup.addLookupfield(fieldNum(CustGroup, CustGroup), true);
        systableLookup.addLookupfield(fieldNum(CustGroup, Name), false);
        systableLookup.performFormLookup();
    }
}

Das nächste Beispiel ist eine Erweiterung des obigen, wobei nun auch ein Query verwendet wird, um die anzuzeigenen Werte einzuschränken.

[Control("String")]
class FormStringControl1
{
    public void lookup()
    {
        //super();
        SysTableLookup systableLookup =
            SysTableLookup::newParameters(tableNum(CustGroup), this);
        Query query;

        query = new Query();
        query.addDataSource(tableNum(CustGroup));

        query.dataSourceTable(tableNum(CustGroup)).addRange(
            fieldNum(CustGroup, CustGroup)).value("??");
        systableLookup.parmQuery(query);

        systableLookup.addLookupfield(fieldNum(CustGroup, CustGroup), true);
        systableLookup.addLookupfield(fieldNum(CustGroup, Name), false);

        systableLookup.performFormLookup();
    }
}

 


 
 
Seiten 1 2 » 

 

 
 
 
Beiträge des aktuellen Monats
Oktober 2019
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
28293031 
 
© 2006-2019 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu