Hallo,
hat hier jemand evtl. ausreichend Erfahrungen gesammelt, um mir sagen zu können, wie ich am geschicktesten eigene Methoden in C# Scripte einbinde, die ich im Visual Studio schreibe?
Ich arbeite momentan an einem größeren Script, das Adressdaten aus dem CRM ausliest, den User nach einem Startpunkt mit maximaler Fahrtdauer fragt, diese Informationen an die Google Distance Matrix weiterleitet, die Antwort-Json-Datei in diverse Klassen deserialisiert und dann abgleicht, welche Ziele innerhalb der maximalen Fahrtzeit liegen und diese anschließend als Filter im CRM anwendet.
Der Ablauf funktioniert an sich. Allerdings nur verlässlich aus dem Visual Studio heraus. Folgendes habe ich so weit gelernt:
-
Zunächst hatte ich alle Klassen und Methoden in einer eigenen dll, die ich aus dem Script heraus referenziert habe und deren Methoden ich dann aus static void Main() aufgerufen habe. Da in der dll auch mit cRM.COM Objekten gearbeitet wurde, ist das Script beim zweiten Durchlauf abgestürzt mit der NullReferenceException.
→ War leider mein Fehler, dass wurde im SDK Dokument beschrieben. -
Das führte zu folgendem Vorgehen: Da ich die Json Datei in eigene Klassen deserialisieren muss, die Combit API aber laut SDK PDF keine eigenen Klassen zulässt, habe ich diese also in der externen dll belassen, die Methoden, die auf Combit Objekte zurückgreifen aber in das Script übertragen.
Das SDK Handbuch gibt vor, dass die Methoden mit static versehen sein müssen, also war mein Aufbau wie folgt:
public static void Main() {}
public static void Methode1() {}
public static void Methode2() {}
etc.
Dieser Aufbau entspricht im Wesentlichen also dem Aufbau des Beispiel Scripts in der SDK Pdf auf Seite 58.
Der Aufbau hat dazu geführt, dass die Methoden dem CRM, bei Start aus CRM, nicht bekannt waren, da sie, dem C# Script Beispielprojekt/Whitepaper folgend, in #region Visual Studio only fallen.
Jetzt habe ich das Script so umgebaut, dass es sich für mich eher wie ein VBScript anfühlt, als wie ein Programm, das in einer C# Logik geschrieben wurde.
Kann mir jemand auf die Sprünge helfen, ob ich hier irgendwo einen Denkfehler beim Aufbau gemacht habe?
Vielen Dank
David