2 Stimmen

VB.NET-Methode nicht gefunden beim Laden der Assembly

Ich erhalte eine "Methode nicht gefunden: 'Boolean MyCompany.LibraryAssembly.SomeFunction(System.String)'" Ausnahme/Fehler beim Ausführen einer VB.NET-Konsolenanwendung.

Die Methode ist Teil einer externen Assembly und sie ist definitiv in der Assembly enthalten. Der Fehler tritt nur zur Laufzeit auf, wenn ich die Funktion aufrufe, die die Methode aufruft.
Ich habe die Assembly in meinem Projekt referenziert und kopiere sie nicht lokal. Intellisense zeigt keine Fehler an, und auch der Compiler nicht. Ich lade die Assembly statisch und nicht dynamisch.

Ich referenziere sie aus einem lokalen Ordner (nicht dem GAC), obwohl die gleiche Version auch im GAC verfügbar ist.

Irgendwelche Vorschläge, was ich überprüfen könnte?

2voto

Anthony K Punkte 2443

Ich fand die Lösung darin, den GAC erneut mit derselben Version der lokalen Assembly zu aktualisieren. Dies tat ich, indem ich die Assembly-Datei in den C:\Windows\Assembly-Ordner zog und ablegte. Nachdem ich dies getan hatte und meine Konsolenanwendung neu erstellt hatte, war das Problem verschwunden. Seltsam, denn die Assembly im GAC zeigte bereits dieselbe Versionsnummer wie die lokal gespeicherte an.

1voto

Thorarin Punkte 45433

Welche .NET-Version ist das?

Anhand Ihres Methodennamens sieht es so aus, als ob die Methode in einem Module definiert ist?
Ich habe ein paar (ältere) Referenzen im Internet gefunden, dass Modulfunktionen außerhalb Ihres Assemblys nicht zugänglich sind. Als ich dies jedoch mit meinem VS2008 getestet habe, hat es funktioniert.

Module werden zu NotInheritable-Klassen mit Shared-Methoden kompiliert. Versuchen Sie, sich auf die Methode unter Angabe des Modul- / Klassennamens zu beziehen und sehen Sie, ob sich dadurch etwas ändert?

Wenn Sie einen starken Assembly-Namen verwenden, hat das Laden aus dem GAC Vorrang. Wenn möglich, entfernen Sie die Assembly vorübergehend aus dem GAC, nur um sicherzustellen, dass Sie keine ältere Version verwenden.

0voto

Ganesh R. Punkte 4312

Versuchen Sie, den Verweis zu entfernen und ihn erneut hinzuzufügen. Dabei sollten Sie die .NET-Versionen des Objekts überprüfen. Vergleichen Sie sie dann mit der Version Ihrer App.

(Ich glaube, dass GAC Vorrang vor dem lokalen Ordner hat. Bin mir aber nicht sicher. Bitte überprüfen Sie auch die Version des GAC-Dl.)

Überprüfen Sie auch, ob die Funktion zugänglich ist (es könnte sich um eine geschützte oder interne Funktion handeln).

0voto

chrissie1 Punkte 4954

Normalerweise lösen Clean und Rebuild die Methoden-not-found-Ausnahmen für mich.

0voto

Nakul Chaudhary Punkte 24516

Ich denke, der Bin-Ordner Ihrer laufenden Anwendung enthält alte Assembly. Kopieren Sie die neue Assembly in den Bin-Ordner Ihrer Anwendung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X