Mit C#.NET von Webparts des SharePoint Portal Server auf Axapta COM zugreifen



  • Hallo C#-Kenner,

    ich hab folgendes vor: Zugriff von SharePoint Portal Server-Webparts auf den Axaptap COM-Connector.
    Der SharePoint Portal Server (SPPS) stellt sogenannte Webparts auf .NET-Ebene bereit (ASP.NET -ähnlich). Diese Webparts werden als templates durch ein .NET-PlugIn angeboten. Man kann damit beliebig in C# programmieren und bestimmte Ausgaben im SPPS realisieren. Dieser Schritt funktioniert. Folgender Quelltext:

    namespace SPS_test
    {
    	[ToolboxData("<{0}:SPS-test runat=server></{0}:SPS-test>"),
    		XmlRoot(Namespace="SPS_test")]
    	public class WebPart1 : Microsoft.SharePoint.WebPartPages.WebPart
    	{
    		protected override void RenderWebPart(HtmlTextWriter output)
    		{
    			;
                            output.Write(SPEncode.HtmlEncode("text in SPPS"));
                    }
            }
    }
    

    Das Einbinden in SPPS erfordert einen starken Namen->Deswegen wird eine Datei mit Schlüssel in der AssemblyInfo.cs eingebunden:

    SHARP][assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFileAttribute("c:\\keyp.snk")]
    [assembly: AssemblyKeyName("")]
    

    Der Zweite Schritt ist der Zugriff mit C# auf den AXapta COM-Connector. Das funtkioniert auch. Hier wird einfach durch "Verweis hinzufügen" der COM-Connector eingebunden. Das kann dann so aussehen:

    AxaptaCOMConnector.Axapta Axapta;
    			AxaptaCOMConnector.IAxaptaObject thisClass;
    			AxaptaCOMConnector.AxaptaParameterList	ParamList;
    			string  custName    = ""; 
    			string	dAccountNum = "4000";
    			;
    			// first log into Axapta
    			Axapta		= new AxaptaCOMConnector.AxaptaClass();
    			ParamList	= new AxaptaCOMConnector.AxaptaParameterListClass();
    			ParamList.Size = 1;
    			ParamList.set_Element(1,dAccountNum);
    			Axapta.Logon("admin", "", "", "");
    			thisClass = Axapta.CreateObject("ibs_CSharp","","","","","","");
    			Axapta.Refresh();
    			custName = thisClass.CallEx("retCustName",ParamList).ToString();
    

    DAS PROBLEM: Das einfügen des letzteren Quelltextes in den Webpart von SPPS bringt folgenden Fehler:

    Das Generieren der Assembly ist fehlgeschlagen -- Die verwiesene Assembly 'Interop.AxaptaCOMConnector' hat keinen starken Namen

    Irgendwo erscheint mir das auch logisch, dass die AxaptaCOMConnector.dll keinen starken Namen hat. Daher hab ich schon mit dem sn-Tool viele Möglichkeiten der Abänderung dieser DLL versucht: Ohne erfolg. Auch verzögertes Signieren ging nicht 😞

    Hat jemand eine Ahnung wie man diesen COM-Connector einen starken Namen zuweist?

    Für Hilfe wäre ich sehr sehr sehr dankbar.


Anmelden zum Antworten