2009-08-03 16 views
2

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

Die Methode ist Teil einer externen Baugruppe und befindet sich definitiv in der Baugruppe. Der Fehler tritt nur zur Laufzeit auf, wenn ich die Funktion aufrufen will, die die Methode aufruft.
Ich habe die Assembly, auf die von meinem Projekt verwiesen wird, und ich kopiere es lokal nicht. Intellisense zeigt keine Fehler und der Compiler auch nicht. Ich lade die Assembly statisch nicht dynamisch.

Ich referenziere die von einem lokalen Ordner (nicht die GAC), obwohl die gleiche Version auch von der GAC verfügbar ist.

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

Antwort

2

Ich fand die Lösung bestand darin, die GAC erneut mit der gleichen Version der lokalen Assembly zu aktualisieren. Ich habe dies getan, indem ich die Assemblydatei in den Ordner C: \ Windows \ Assembly gezogen und dort abgelegt habe. Nachdem das & getan wurde und dann meine Konsolenanwendung neu aufgebaut wurde, ging das Problem weg. Seltsam, da die Assembly im GAC bereits die gleiche Versionsnummer wie die lokale hatte.

1

Welche .NET-Version ist das?

Aus Ihrem Methodenname 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 Ihrer Baugruppe nicht zugänglich sind. Als ich das mit meinem VS2008 getestet habe, hat es funktioniert.

Module kompilieren zu NotInheritable-Klassen mit Shared-Methoden. Versuchen Sie, sich auf die Methode zu beziehen, die den Modul-/Klassennamen enthält, und sehen Sie, ob es einen Unterschied macht.

Wenn Sie einen starken Assemblynamen verwenden, hat das Laden vom GAC Vorrang. Wenn möglich, entfernen Sie die Baugruppe vorerst aus dem GAC, um sicherzustellen, dass Sie keine ältere Version verwenden.

0

Versuchen Sie, die Referenz & wieder hinzuzufügen. Informieren Sie sich dazu einfach über die .NET-Version des Objekts. Dann vergleiche es mit der Version deiner App.

(ich glaube, GAC presedence über lokale folder..Not usre darüber hat. Bitte beachten Sie auch Version des GAC Dl überprüfen.)

Prüfen Sie auch, ob die Funktion zugänglich ist (es geschützt sein kann oder interne Funktion)

+0

Wenn die Funktion nicht zugänglich wäre, würde es definitiv einen Compilerfehler geben. – Thorarin

+0

Einverstanden.aber nur ein paar Ideen werfen. –

0

Reinigen und Rebuild meist lösen die Methode nicht gefunden Ausnahmen für mich.

0

Ich denke, bin der laufenden Anwendung enthalten alte Assembly. Kopieren Sie die neue Baugruppe in Ihre Anwendungskiste.

Verwandte Themen