Hinweise zur Benutzung von C#-Scripten

Bei C#-Scripten steht Ihnen der volle Funktionsumfang des .NET Frameworks 4.8 zur Verfügung (abwärtskompatibel bis .NET Framework 4.0), weshalb für das Ausführen von C#-Scripten auch mindestens dieses oder ein neueres .NET Framework installiert sein muss. Die dafür benötigten Module "combit.CSharpScript28.Engine.x86.dll" und "combit.CSharpScript28.Interface.x86.dll" befinden sich im Hauptverzeichnis der combit CRM Installation. Eigene Scripte oder Module, die nach einem Update der combit CRM Hauptversion verwendet werden sollen, brauchen zwingend eine aktualisierte Referenz auf die zuvor genannten combit.CSharpScript*-Module.

Hinweis: Unterstützt wird die C#-Sprachspezifikation bis einschließlich Version 7.3.

Kleinere C#-Scripte können direkt als einzelne Zeilen in eine Datei oder die Eingabemaske geschrieben werden. Wenn jedoch verschiedene Methoden verwendet werden sollen, so muss der Hauptteil des Scripts in die Main-Methode (public static void Main()) verlagert werden. Ein C#-Script ohne Main-Methoden, mit jedoch mindestens einer eigenen Methodendefinition kann nicht ausgeführt werden. Alle im Script definierten Methoden müssen mit dem Schlüsselwort "static" versehen sein. Normale Klassendefinitionen werden derzeit nicht unterstützt, um dennoch eigene Klassen zu verwenden können diese in externen Bibliotheken definiert und diese im Script inkludiert werden. Kleinere, für ein einzelnes Script gedachte Klassendefinitionen können als "Nested Classes" innerhalb des Scripts platziert werden.

Die in diesem Dokument aufgelisteten Objekte der Objekt-Referenz dürfen ausschließlich im Ursprungsthread des Scripts erstellt werden. Wenn im Script ein neuer Thread erstellt und in diesem wiederum cRM-Objekte erstellt werden, so können diese beim Beenden des Scripts nicht korrekt aufgeräumt werden. Dadurch kann es bei der weiteren Benutzung von combit CRM zu Fehlern kommen.

Da C#-Scripte vor der Benutzung kompiliert werden müssen und dies unter Umständen länger dauern kann als das Ausführen des Scriptes selbst, werden die 30 neuesten kompilierten Scripte für ein erneutes Ausführen zwischengespeichert. Die entsprechenden Dateien befinden sich im Ordner "%temp%\combitCSharpScriptCache\". Dort gibt es zum einen die Datei "combitCSharpScriptCache.cache", welche Informationen über die gespeicherten Scripte enthält, und zum anderen für jedes Script einen Ordner mit einem Namen in der Form "combitCSharpScript_[GUID]" (z. B. "combitCSharpScript_e9527e037aa149f3ba79bd408a8232db"). In diesem Ordner befinden sich jeweils alle vom Script benutzten .dll-Dateien, Debug-Informationen und das Script selbst (ebenfalls in Form einer .dll-Datei).

Hinweis: Die Definition einer Ausnahme für den Cache-Ordner bei Echtzeit-Virenscannern kann eine Geschwindigkeitssteigerung bei der Ausführung der Scripte bewirken.

Es wird empfohlen, beim Durchlaufen von Collections in For-Each-Schleifen, alle verwendeten Objekte explizit mit dem Aufrufen der Methode Dispose() freizugeben. Dies verhindert einen erhöhten Speicherverbrauch und hilft dabei Instabilitäten zu vermeiden.

Sollte es Scripte geben, welche große Referenzen mit <!--#include ref="[Pfad einer .dll]"--> einbinden, so können diese eine spürbare Verzögerung beim Start aufweisen - bedingt durch das Laden der Referenzen in den Speicher. Normalerweise werden diese Referenzen bei jedem Scriptaufruf erneut geladen. Um Referenzen einmalig beim Programmstart zu laden und damit die Startzeit aller betroffenen Scripte zu verbessern, ist es möglich ein spezielles "preload.csscript"-Script im Programmverzeichnis (%APPDIR%) anzulegen. Dieses Script sollte lediglich die entsprechenden "include ref"-Anweisungen enthalten. Alle angegebenen Referenzen bleiben somit bis zum Beenden des combit CRM-Prozesses geladen.

Einen Einstieg in das C# Scripting erhalten Sie auch im Artikel
C# Scripting mit Microsoft Visual Studio in unserer Knowledgebase.