[AX 2009] GAC für alle Clienten zugänglich machen

21. Januar 2009 09:38

Guten Tag an alle,

Vorgeschichte:

Ich habe in VisualStudio2008 mit C#.Net eine DLL geschrieben, welche mir einfach zwei Strings und eine addition ausgeben kann. Soweit läuft alles.
Jetzt habe ich die DLL im Global Assembly Cache registriert und auch in dem C:\Windows\assembly\ Ordner installiert. Ich kann diese DLL wunderbar auf meinem Lokalen Client verwenden und auch, nachdem er als Referenz hinzugefügt wurde, per Code die Funktionen aufrufen.

Mein Vorhaben:

Diese DLL soll aber für alle Clienten zugänglich sein. Hierzu habe ich auf dem Server (Dort läuft eine AX version, die übers Netzwerk verfügbar ist) die DLL abenfalls in den GAC registriert und installiert (Windows Server 2003). Wenn ich unter meinem Benutzernamen nun diesen Clienten starte, funktioniert alles wunderbar. (Domänen-Verwaltung)

Das Problem:

Sobald jemand anderes von seinem Notebook aus den Clienten startet, sieht der die Referenz und den Job, welchen ich angelegt habe. Aber sobald er den Job ausführen bzw. kompilieren will, kommt eine Fehlermeldung: "Das Feld ist in der Tabelle nicht vorhanden.
Ich denke, dass die DLL auf den anderen Rechnern nicht im GAC ist, aber es muss eine Lösung geben, ohne dass man zu jedem Rechner geht und die DLL im GAC registriert.

Ich dachte, man muss diese nur auf dem Server, wo auch der AOS läuft, registrieren, da ja dort hin zugegriffen wird.


Kann mir jemand Helfen ?

======
Code der DLL (C#.Net):
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HelloWorldClass
{
public class HelloWorld
{
        public string sayHello()
        {
            return "Hello CLR Interop World!";
        }
        public int add(int a, int b)
        {
            return a + b;
        }
        public string test()
        {
            return "erfolg!";
        }
 }
}

_________
Code, welcher in AX auf die DLL-Funktionen zugreift:
Code:
static server void KCS_JobTest_HelloWorldClass(Args _args)
{
        HelloWorldClass.HelloWorld hw;
        CLRObject clrDNC;
        str s;
        int i;
        str z;
        ;

        //hw = new HelloWorldClass.HelloWorld();
        clrDNC = new HelloWorldClass.HelloWorld();
        hw = clrDNC;

        s = hw.sayHello();
        info(s);

        i = hw.add(18,29);
        info(int2str(i));

        z = hw.test();
        info(z);
}



Danke schonmal,

MfG Robin