Eigene dll über eigene Form ansprechen? .Net 3.5

08/03/2010 - 16:57 von Jo Michael | Report spam
Hallo Zusammen,

ich steh grad ein bißl auf'm Schlauch...
Ich habe eine Test-dll erstellt die aus einer ERP-Software(Dynamics NAV)
ansprechbar
sein soll. DAS funktioniert auch, aber um die dll besser, einfacher und
schöner testen zu
können will ich eine Windows Form erstellen mit der ich meine dll anspreche.
(Das ist weniger
umstàndlich bei der Entwicklung als direkt in der ERP-Software zu testen).

Mein Problem ist aber das ich nicht weiß wie ich auf meine Funktion
zugreifen kann.
Der folgende Code bringt den Fehler: "Der Name "cpNAV_Test" ist im aktuellen
Kontext nicht vorhanden."


namespace TestDll
{
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("123C2968-5FEA-41d8-9186-C8DCA9871123")]
[ComVisible(true)]
public interface ITestDll
{
string cpNAV_Test(string Name);
}

[ComVisible(true)]
[Guid("123670BB-546F-43fb-B350-2BA57012B123")]
[ClassInterface(ClassInterfaceType.None)]
public class Class1 : ITestDll
{
public string cpNAV_Test(string Name)
{
return "Hallo "+Name;;
}
}
}

Hier der Codebereich aus meiner Form: (Testdll.dll als Verweis dem Projekt
hinzugefügt)
using CollaborationPortalNAV;
:
:
private void bt_Test_Click(object sender, EventArgs e)
{
MessageBox.Show(cpNAV_Test("Billy"));
}


Wenn ich in meiner Dll aber eine statische Klasse einfüge kann ich auf diese
zugreifen:
dll-Schnippsel:
public static class Proxy
{
public static string p_cp_NAV_Test(string Name)
{
return Name;
}
}

Code aus der Windows-Forms:
MessageBox.Show(Testdll.Proxy.p_cp_NAV_Test());

Aber ich hab es nicht geschaft auf meine eigentliche Klasse zu zugreifen.
Hab auch schon mal über [DllImport] probiert, aber da kommt immer ein
EntryPointNotFoundException...
auch wenn ich cpNAV_Test als Entrypoint mit angebe.

Kann mir irgendjemand sagen wie ich das ganze zum laufen bekomme?

Vielleicht als Hinweis.
Ich benutze gerade VS 2010 Beta2 weil mit dem ganzen Sharepoint2010
angesprochen werden soll...
Vielen Dank schon mal,
grüße,
Jo
 

Lesen sie die antworten

#1 Stefan Hoffmann
08/03/2010 - 17:26 | Warnen spam
hallo Jo,

On 08.03.2010 16:57, Jo Michael wrote:
Mein Problem ist aber das ich nicht weiß wie ich auf meine Funktion
zugreifen kann.
Der folgende Code bringt den Fehler: "Der Name "cpNAV_Test" ist im
aktuellen Kontext nicht vorhanden."


Im speziellen kann ich dir hier nicht helfen. Aber ich würde folgenden
Ansatz wàhlen:

Entwickle deine Funktionen in einer normalen Klassen-Bibliothek. Hier
kannst du einfach mit den normalen Unit-Tests arbeiten.

Die DLL ist ja bloß eine Sicht (Service Facade) auf deine
Funktionalitàt. D.h. wenn dein Unit-Tests alle grün sind, mußt du dich
nur noch um die korrekte Verpackung in eine entsprechende DLL kümmern.


mfG

Ähnliche fragen