locked
AntME läßt sich nicht debuggen

    Frage

  • Hallo zusammen.

    Ich habe das Problem, AntME in Visual C# 2005 Express zu debuggen (F5).
    Es wird jedesmal eine Exeption ausgelöst, mit der ich aber nichts anfangen kann. Das Problem tritt auf zwei verschiedenen Clients (beide XP SP2) auf.

    Fehlermeldung:

    ReflectionTypeLoadExeption wurde nicht behandelt.
    {"Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen."}
    Mittwoch, 8. November 2006 12:42

Alle Antworten

  • ich habe den gleichen Fehler in Visual Studio 2005 Pro (MSDNAA-Edition)

    System.Reflection.ReflectionTypeLoadException wurde nicht behandelt.
      Message="Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen."
      Source="mscorlib"
      StackTrace:
           bei System.Reflection.Module.GetTypesInternal(StackCrawlMark& stackMark)
           bei System.Reflection.Assembly.GetTypes()
           bei AntMe.PluginManager.FügeVerweiseHinzu(Assembly assembly)
           bei AntMe.PluginManager.SucheNachPlugins()
           bei AntMe.PluginManager..ctor()
           bei AntMe.Main..ctor(String[] parameter)
           bei AntMe.Program.Main(String[] parameter)


    habe nichts am Code verändert. Lediglich versucht zu debuggen ... habe die Version heute direkt von der Coding4Fun Site heruntergeladen!
    Mittwoch, 8. November 2006 18:23
  • Hallo Leute,

    Mir scheint es so, daß einige Plugins nicht gefunden werden. Habt Ihr DirectX 9 installiert (siehe AntMe! Downloadseite)? Bekommt Ihr Fehler schon beim Kompilieren oder steht unten in der Statuszeile "Erstellen erfolgreich?"

    Welches Paket von AntMe! verwendet Ihr? Das Einsteiger- oder das Profipaket? Habt Ihr beide ausprobiert?

    Wenn gar nichts hilft können wir am Montag mal genau schauen, da bin ich wieder im Büro; momentan bin ich im Urlaub aber die Ameisen lassen mich trotzdem nicht los.... habe aber hier kein Visual Studio um genau zu checken was los sein könnte.

    Viele Grüße,

    Uwe

     

     

     

    Donnerstag, 9. November 2006 08:42
    Moderator
  • Guten Morgen zusammen.

    Wie Uwe schon sagt gibt es da Probleme beim dynamischen Laden von externen Assemblies, also den Plugins. Erste Hilfe - einfach mal um zu sehen obs daran liegt - könnte es bringen die einzelnen Plugins aus dem Verzeichnis zu entfernen um zu sehen welches Plugin verantwortlich für den Fehler ist.

    Am wahrscheinlichsten ist es, dass die externen Abhängigkeiten der Visualisierungsplugins nicht vorhanden sind. Der Tipp mit DirectX ist garnicht so schlecht. Für das Ameisen-KI-Debugging reicht die "normale" DirectX-Version. Wollt ihr aber die Plugins mitkompilieren ist das DirectX-SDK erforderlich.

    Viel Erfolg
    vom Tom


    Donnerstag, 9. November 2006 09:26
  •  Uwe Baumann Schrieb:

    Hallo Leute,

    Mir scheint es so, daß einige Plugins nicht gefunden werden. Habt Ihr DirectX 9 installiert (siehe AntMe! Downloadseite)? Bekommt Ihr Fehler schon beim Kompilieren oder steht unten in der Statuszeile "Erstellen erfolgreich?"

    Welches Paket von AntMe! verwendet Ihr? Das Einsteiger- oder das Profipaket? Habt Ihr beide ausprobiert?

    Wenn gar nichts hilft können wir am Montag mal genau schauen, da bin ich wieder im Büro; momentan bin ich im Urlaub aber die Ameisen lassen mich trotzdem nicht los.... habe aber hier kein Visual Studio um genau zu checken was los sein könnte.

    Viele Grüße,

    Uwe



    DirectX 9c ist installiert. In der Statusleiste steht zwar "Erstellen erfolgreich", dann kommt die Exeption, danach kannste OK oder weiter klicken, und es passiert nichts. Versucht man dann die IDE zu schließen, kommt: Wollen Sie das debuggen wirklich beenden?

    Ich habe beide Pakete ausprobiert: Beim Einsteiger-Paket kommt die o.g. Exeption, bei der Profi-Version kommt ein "abgefahrenes" PopUp, ich zitiere:

    Fehler beim Wechslen in den Unterbrechungsmodus aus folgendem Grund: Die Datei "C:\Dokumente und Einstellungen\uwebaum\Eigene Dateien\Visual Studio 2005\Projects\AntMe\Beta 1\AntMe\AntMe\PluginManager.cs" gehört nicht zu dem Projekt, das gedebuggt wird.
    Normalerweise tritt diese Bedingung auf, wenn das Projekt vor dem Starten der Debugsitzung nicht neu erstellt wurde, wenn die Assemblydatei veraltet ist oder wenn die Quelldateien des Projekts zwischem dem Erstellen des Projekts und dem Starten der Debugsitzung an einem Speicherort auf einem anderen Datenträger verschoben wurden.
    Bearbeiten und Fortfahren wird für diese Debugsitzung deaktiviert.


    *heul*   Ich will doch nur mal die Ameisen sehen.....  *schnüff*
    Donnerstag, 9. November 2006 15:25
  • wenn ich das Projekt öffne bekomme ich egal von welchem Ort die Meldung, "Der Projektspeicherort ist nicht vertrauenswürdig" ...

    wie kann ich kontrollieren ob die Abhängigkeiten korekt sind?
    Donnerstag, 9. November 2006 16:50
  • da muss ich wohl deinen Eintrag übersehen haben als ich meine Antwort geschrieben habe. Bitte um Entschuldigung.

    Die ausführliche Fehlermeldunng deiner Profiversion sagt, dass da eine Datei fehlerhaft verknüft ist. Dem ausgegebenen Pfad zufolge ist da beim zusammenstellen des Projektes etwas schief gelaufen und es wurde ein absoluter Pfad in Uwe's Eigene Dateien gesetzt.

    Du kannst dir abhelfen indem du die Verknüpfung zu dieser Datei erneuerst.
    Rechts im Projektbaum findest du das Projekt "AntMe" und darin enthalten die Datei "PluginManager.cs". Dieser Eintrag sollte dank fehlender Datei auch entsprechend markiert sein. Den Eintrag kannst du per Rechtsklick und Entfernen aus dem Baum raus löschen.

    Danach fügtst du über Rechtsklick auf "AntMe" / "Hinzufügen" / "Vorhandenes Element..." die richtige Datei "PluginManager.cs" auswählen die im Profipack um Verzeichnis "AntMe\AntMe" liegt.

    Danach sollte wieder alles korrekt kompilieren - sofern nicht noch andere Dateien absolut verknüpft sind.

    Viele Grüße
    Tom
    Donnerstag, 9. November 2006 16:51
  • mein oben erwähnter Fehler tritt beim Deguggen von PluginManager.cs in Zeile 142 bei "assembly.GetTypes()" auf.

    Hoffe das kann euch helfen beim finden einer Lösung.
    Donnerstag, 9. November 2006 19:34
  •  corpsealive Schrieb:
    mein oben erwähnter Fehler tritt beim Deguggen von PluginManager.cs in Zeile 142 bei "assembly.GetTypes()" auf.

    Hoffe das kann euch helfen beim finden einer Lösung.


    Jepp, genau wie bei mir: Selbe Stelle, selbe Meldung....

    Update: Ich warte lieber auf die VB-Version, für C# bin ich wohl zu plöde....
    Ich kriegs nicht kompiliert....egal was ich tue....
    Freitag, 10. November 2006 10:10
  • Ich habe immernoch Schwierigkeiten nachzuvollziehen was da bei euch hakt. Bitte versucht mal
    das Plugin zu lokalisieren das für diesen Fehler verantwortlich ist.

    Unkomlizierteste Möglichkeit das zu tun: Einfach die entsprechenden dll-Dateien einzeln aus dem Verzeichnis entfernen und sehen ob irgendwann läuft.

    Komliziertere, aber coolere Variante ;-) Projekt debuggen und sehen welcher Dateiname in der Variable steht bevor der Fehler passiert.

    Bin gespannt...
    Montag, 13. November 2006 13:36
  • http://www.tehcem.de/antme.jpg

    Hier sieht man den Fehler, der erscheint wenn man das Programm versucht mit F5 zu debuggen.
    Vielleicht hilft das weiter.
    Auf Wunsch kann ich auch andere Screenshots posten...


    Grüße
    Daniel
    Montag, 13. November 2006 14:34
  • Hi Daniel,

    klapp mal im Projektmappen-Explorer alle Zweige auf die "Verweise" heißen und suche nach ungültigen/nicht gefundenen Verweisen, bzw. poste das Ganze als Bild... ich bin sicher da werden einige Verweise nicht gefunden...

    Gruß,

    Uwe

     

    Montag, 13. November 2006 15:33
    Moderator
  • Stimmt !

    http://www.tehcem.de/antme2.jpg
    Es werden zwei mal die gleichen Verweise nicht gefunden.

    Was kann ich dagegen tun ?
    DirectX 9c ist bereits installiert.


    Daniel
    Montag, 13. November 2006 15:49
  • Ahh, da haben wir's ja ;-)

    Da ich denke daß noch einige andere das Problem haben werden mache ich mal ein paar Screenshots und schreibe einen kleinen Artikel.

    Leider installiere ich grade meinen Rechner neu und kann das erst morgen machen.

    Viele Grüße,

    Uwe

    Montag, 13. November 2006 16:52
    Moderator
  • Der Fehler lag schließlich doch in einer Fehlerhaften DirectX Installation.

    Ich vermute, dass irgendetwas bei dem Update von Windows2000 auf WindowsXP schiefgelaufen ist.

    Wie dem auch sei: Es fehlten gültige Verweise zu Directx.
    DirectX neu installiert...fertig...läuft !
    Montag, 13. November 2006 18:29
  • Hi Writable,

    Alles klar! Ich werde trotzdem sehen ob ich einen kleine Artikel reinstelle, falls andere auch eine ungültige D3D-Installation haben...

    Viel Spaß beim Ameisenprogrammieren...

    Viele Grüße,

    Uwe

    Dienstag, 14. November 2006 08:33
    Moderator
  • Die Fehlermeldung "Der Projektspeicherort ist nicht vertrauenswürdig" kann auftreten, wenn AntMe! über eine Netzwerkfreigabe geladen wird. In diesem Fall, einfach das Verzeichnis auf eine lokale Festplatte kopieren und von da aus laden. Wird wohl mal Zeit mich in Code Access Security einzulesen, damit das nicht passiert...

    Dienstag, 14. November 2006 12:03
  • So, bei mir läufts jetzt auch:  Die DirectX-Version, die ich (von einer Spiele-CD) installiert habe, ist anscheinend unvollständig gewesen.  Habe dann die DirectX End-User Runtimes (April 2006) Full Download installiert, und die Verweise sind sauber........


    Es geht.....   ;-)    Jetzt hab ich wenigens im Zug was zu tun....

    Danke für die hilfreichen Posts und Anregungen...
    Mittwoch, 15. November 2006 17:46
  • Hallo,
    mir haben die Hinweise in diesem Thread leider nicht geholfen.
    Ich bekomme immer diesen Fehler:

    System.Reflection.TargetInvocationException wurde nicht behandelt.
      Message="Ein Aufrufziel hat einen Ausnahmefehler verursacht."
      Source="mscorlib"
      StackTrace:
           bei System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
           bei System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
           bei System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
           bei System.Activator.CreateInstance(Type type, Boolean nonPublic)
           bei System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
           bei System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
           bei System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase)
           bei AntMe.PluginManager.FügeVerweiseHinzu(Assembly assembly)
           bei AntMe.PluginManager.SucheNachPlugins()
           bei AntMe.PluginManager..ctor()
           bei AntMe.Main..ctor(String[] parameter)
           bei AntMe.Program.Main(String[] parameter)

    DirectX 9c ist installiert. Danke für eure Hilfe.
    Werner

    Donnerstag, 16. November 2006 10:11
  • Hab ich auch gedacht, das DX9c richtig installiert ist (dxdiag meldet keinen Fehler).

    Trotzdem ließ sich die Anwendung nicht kompilieren.

    Versuchs mal mit der o.g. Version von DirectX9c.

    OC
    Donnerstag, 16. November 2006 12:39
  • Vielen Dank für deinen Zuspruch, aber hier krabbelt immer noch nix. Ich hab nocheinmal die DX9c Vollversion Feb20056 installiert und sogar den Rechner neu gestartet.
    Der Fehler ist identisch.
    Gibt es weitere Ideen / Lösungen ?    Danke Werner
    Donnerstag, 16. November 2006 16:15
  • Das Problem liegt an meiner uralt Grafik, die kein D3D unterstützt.
    Nach einem Autausch wird das wohl klappen.
    Vielen Dank nochmal.
    Weja
    Freitag, 17. November 2006 10:47
  • Bei mir läufts jetzt auch, habe Visual Studio und DirectX SDK Okt 2006 neu installiert... kann mir aebr trotzdem nicht erklären wodrin der Fehler lag :-(
    Samstag, 18. November 2006 17:56
  • ICh habe mittlerweile alles gemacht was hier beschrieben war. Neu installiert, DX9 SDK installiert. Mittlerweile tritt der Fehler mit dem PluginManager nicht mehr auf, aber der:

    System.Reflection.TargetInvocationException wurde nicht behandelt.
      Message="Ein Aufrufziel hat einen Ausnahmefehler verursacht."
      Source="mscorlib"
      StackTrace:
           bei System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
           bei System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
           bei System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
           bei System.Activator.CreateInstance(Type type, Boolean nonPublic)
           bei System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
           bei System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
           bei System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase)
           bei AntMe.PluginManager.FügeVerweiseHinzu(Assembly assembly) in C:\AntMe\AntMe\PluginManager.cs:Zeile 173.
           bei AntMe.PluginManager.SucheNachPlugins() in C:\AntMe\AntMe\PluginManager.cs:Zeile 75.
           bei AntMe.PluginManager..ctor() in C:\AntMe\AntMe\PluginManager.cs:Zeile 47.
           bei AntMe.Main..ctor(String[] parameter) in C:\AntMe\AntMe\Main.cs:Zeile 32.
           bei AntMe.Program.Main(String[] parameter) in C:\AntMe\AntMe\Program.cs:Zeile 22.
           bei System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
           bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           bei System.Threading.ThreadHelper.ThreadStart()

     

    Den hatten wir ja oben schonmal. Alle Neuinstallationen nützen nichts. Kann mir jemand weiterhelfen? Ich möchte zu gern mit dem Ameisen rumspielen...

    Mittwoch, 22. November 2006 08:55
  • Hallo alle zusammen,

    ich hab erst angefangen ich für das Programmieren zu interessieren. Hab mir Visual C#, Beide AntMe Kits sowie Directx9c und SDK runtergeladen.

    nun bekomme ich folgende Fehlermeldung beim Demotest wie in L1 des Tutorials beschrieben:

    LoaderLock wurde erkannt.
    Message: Die DLL "C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll" unternimmt einen Versuch, innerhalb der Sperre für den OS-Loader eine verwaltete Ausführung durchzuführen. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.

    Die Hilfeinformation sagt mir ich soll ne Stapelübewachung machen hab aber keine Ahnung wie blick da nicht durch wie die das beschreiben.

    Ich hoffe ihr könnt mir helfen.

    Danke Ungezaehmt

    Montag, 1. Januar 2007 21:59
  • Hallo ungezähmt,

    das Problem des LoaderLocks kannst du in den Ausnahmeeinstellungen von Visual Studio lösen (siehe FAQ).

    Was die restlichen Beschreibungen der Abstürze angeht lässt sich wohl alles auf die fehlenden oder fehlerhaften DirectX-Bibliotheken zurück führen. Bitte prüft mal ob das beim Debug auch wirklich alle Projekte richtig kompilieren. Ob die DirectX-Bibliotheken korrekt installiert sind kann man, wie Uwe schon beschrieben hat, im Projektexplorer unter Referenzen erkennen.

    Verwendet denn jemand von euch 64Bit-Prozessoren und Betriebssysteme?

    Adieu
    Tom

    Dienstag, 30. Januar 2007 11:29
  • Hi Tom,

    ich! ;) wie wir aber heute bereits festgestellt haben muss AntMe! für die guten "alten" x86 CPUs kompiliert werden.

    Woran liegt das eigentlich?!

    Gruß,
    Sebastian

    Montag, 5. März 2007 16:14
  • Hi Sebastian,

    dass AntMe nicht 64bit-fähig ist liegt alleine an der 3D-Visualisierung. Dieses Plugin bindet nämlich externe 32bit-Bibliotheken ein die auch nur im 32bit-Modus betrieben werden können. In diesem Fall DirectX. Die benutzte Bibliothek gibts nur für 32bit und kann daher nur von 32bit-Anwendungen verwendet werden.

    Das hat zur Folge, dass die 3D-Visualisierung auch eine 32bit-Anwendung sein muss die wiederum nicht vom 64bit-Starter benutzt werden kann. Also muss auch der Starter für 32bit-Prozessoren kompiliert werden. Beim Rest ists egal.

    Viele Grüße
    Tom

    Montag, 5. März 2007 16:33