Fehler beim Laden der Assembly Microsoft.Cci



  • Hallo,

    ich habe eine ganz kleine Konsolenanwendung:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Microsoft.FxCop.Sdk;
    
    namespace FxCopTest
    {
    	class Entry
    	{
    		static void Main( string[] args )
    		{			
    			AssemblyNode assembly;
    			//AssemblyNode assembly = AssemblyNode.GetAssembly( "DummyLibrary.dll" );			
    
    			Console.WriteLine( "***" );
    			Console.ReadLine();
    		}
    	}
    }
    

    Beim Starten kommt die Fehlermeldung:

    Die Datei oder Assembly "Microsoft.Cci, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.

    Was kann da schieflaufen?
    Das ganze läuft auf einer 64-Bit-Maschine.



  • void* schrieb:

    Was kann da schieflaufen?

    Vermutlich genau das was in der Fehlermeldung steht.Hast du mal überprüft ob du diese Assembly wirklich besitzt?Ansonsten eventuell nachladen.



  • Hallo,

    ja, die Assembly (DLL) ist da. Ich habe FXCop bei MS runtergeladen und installiert. Dann habe ich diese Assembly in meinem Konsolenprojekt bei den Verweisen eingefügt (ich musste die DLL im File-System auswählen).



  • Und wenn du das
    using Microsoft.FxCop.Sdk;
    rausnimmst, kommt der Fehler immernoch?



  • Wenn ich zusätzlich noch die Zeile

    AssemblyNode assembly;
    

    auskommentiere (weil er das sonst nicht kennt), ja, dann läuft es.
    Tatsächlich reicht es schon, die Zeile auszukommentieren. Dann muss er die DLL ja nicht laden und es funzt.



  • Ok dann scheint es so als wenn der in derm Dll wo AssemblyNode existiert diese andere Dll nicht zu finden.Was möchtest du denn überhaupt erreichen, eventuell geht es ja mit standard .net mitteln.



  • Ich möchte mit T4 Code (siehe z.B. http://www.olegsych.com/2007/12/text-template-transformation-toolkit/) generieren.
    Es sollen für WCF DataContracts Klassen aus dem Fachlayer generiert werden. Dazu will ich aus einer Assembly Klassen mit einem bestimmten Attribut auslesen und deren Properties extrahieren.
    Der Weg über das Reflection-System ist versperrt, denn wenn ich in einer Solution eine Assemby lade, kann sie nur noch mit Ihrer AppDomain entladen werden (d.h. wenn ich die Solution zu mache). Und ich will nicht jedesmal die Solution zum Kompilieren schliessen...
    Darum versuche ich anstatt über Reflection über Introspection zu gehen, was mit FxCop möglich ist (falls man es, im Gegensatz zu mir, eingebunden bekommt :D).
    Ich hoffe, das war halbwegs verständlich.

    Noch eine Info:
    In dem FXCop Paket ist auch eine *.exe dabei, die diese DLL nutzt. Und die funzt. Ich habe mal meine *.exe mit allen *.dlls aus dem FXCop-Verzeichnis in einen Topf geschmissen, das lief aber auch nicht!? 😞
    Dann habe ich mir von CodeProject ein Projekt gezogen, dass diese DLL auch benötigt. Da steht nur zur exe kopieren und läuft. Die stürzt aber, genau wie meine, ab???!? 😡



  • Grüßgott!

    Vielleicht weiß hierzu jemand mehr:

    Bei dem CodeProject-Tool steht folgendes:

    This tool depends on a DLL that ships with FxCop. You will have to install FxCop (or just the Microsoft.Cci.dll), and you'll most likely have to reset the assembly reference in this project for Microsoft.Cci.dll based on where you installed it.

    Da steht, dass man die Datei haben muss UND dass man die Assembly Verweise "resetten" muss?
    Wie resettet man die? Was bedeutet das?



  • Verweis auf die DLL löschen und neu hinzufügen



  • mogel schrieb:

    Verweis auf die DLL löschen und neu hinzufügen

    D.h. mann kann nicht einfach die *.exe von dem Typ nehmen, sondern muss neu bauen?



  • void* schrieb:

    mogel schrieb:

    Verweis auf die DLL löschen und neu hinzufügen

    D.h. mann kann nicht einfach die *.exe von dem Typ nehmen, sondern muss neu bauen?

    ich dachte wir reden hier über DLL's ?? ich habe irgendwie den Faden verloren



  • Sorry, war vielleicht etwas konfus.

    Also:
    Ich will mit T4 einen Generator bauen. Dazu wäre die o.g. Assembly (eine DLL) für mich von Nutzen.
    Also habe ich erst mal eine Konsolenanwendung gebastelt, die die benutzt (zum Testen außerhalb eines T4-Projekts). Diese explodiert jetzt aber beim Laden.
    Die *.exe, die mit der DLL geliefert wird (FxCop) läuft jedoch.
    Auf CodeProject habe ich eine andere *.exe gefunden, die mit der Microsoft.Cci laufen sollte. Die explodiert aber auch, sobald Funktionalität aus der Cci genutzt werden sollte.
    Und das englisch-sprachige Zitat bezog sich jetzt auf das Code-Project-Tool (eine *.exe). Und die Frage war jetzt, ob ich dieses Code-Project-Tool neu bauen muss, damit es funzen kann.
    Hoffe, dass die Lage jetzt etwas klarer ist... 😃


Anmelden zum Antworten