Mehrdeutiger Referenzfehler

9

Ich erhalte zeitweise den folgenden Fehler:

  

Konnte die Datei 'com.mycompany.myapp' oder eine ihrer Abhängigkeiten nicht laden. Das Manifest der lokalisierten Assembly stimmt nicht mit dem überein   Baugruppenreferenz.

Ich habe eine Bibliothek von Ajax-Benutzersteuerelementen, die ich erstellt und in eine DLL kompiliert habe. Dieses Projekt enthält Verweise auf Projekt A (com.mycompany.myapp). Meine Hauptwebanwendung verweist auf diese DLL und verweist außerdem auf Projekt A. Dieser Fehler tritt gelegentlich auf, wenn ich versuche, meine Webanwendung neu zu erstellen. Es scheint, als ob die Verweise auf Projekt A nicht mehr synchron zwischen der DLL und der Webanwendung sind.

Dies kann nur behoben werden, indem Sie die DLL neu erstellen, den Verweis auf die DLL aus der Webanwendung entfernen, die Referenz erneut hinzufügen und dann die Webanwendung neu erstellen. Kann jemand erklären, warum dies geschieht und wie man diesen Fehler verhindern kann?

Ich suche nach einer Lösung, mit der ich dieses Problem lösen kann, damit ich diese DLL verteilen kann, ohne befürchten zu müssen, dass sie zeitweise neu erstellt und bereitgestellt werden muss.

    
jason 12.04.2013, 18:22
quelle

4 Antworten

1

Wenn Sie alle Ihre Projekte in derselben Lösung haben, müssen Sie sicherstellen, dass es sich um Projektverweise und nicht um Dateiverweise handelt. Sie können dies überprüfen, indem Sie mit der rechten Maustaste auf das Projekt klicken und zu properties = & gt; Verweise.

In Ihrer Referenzliste sehen Sie eine Spalte mit dem Namen "copy local". Wenn dies auf "false" gesetzt ist, bedeutet dies, dass Sie auf eine Datei anstatt auf ein Projekt verweisen (wodurch die DLL nach dem Erstellen nicht aktualisiert wird). Um es zu lösen, entfernen Sie die Referenz und fügen Sie sie erneut hinzu (stellen Sie sicher, dass Sie auf Ihre Lösung verweisen und nicht auf die DLL auf Ihrer Festplatte verweisen).

Wenn Sie nicht alle Projekte in derselben Lösung haben, ist dies normal. Angenommen, Ihre Ajax Controls-Bibliothek befindet sich außerhalb der Lösung.

Die Ausgangssituation wäre etwa so:

  • Ajax verweist auf A (Version 1)
  • Projektreferenzen A (Version 1)
  • Projektreferenzen Ajax (Version 1)

Nachdem Sie Ihre Lösung erstellt haben (ohne das Ajax-Projekt darin), haben Sie die folgende Situation:

  • Ajax verweist auf A (Version 1)
  • Projektreferenzen A (Version 2)
  • Projektreferenzen Ajax (Version 1)

Wie Sie sehen, benötigt der Compiler plötzlich einen Verweis auf A Version 1 und Version 2, das ist also unmöglich und gibt Ihnen einen Fehler. Dies würde auch erklären, warum es funktioniert, wenn Sie eine Neuerstellung durchführen und die DLL löschen und erneut hinzufügen.

Die Lösung wäre, das Ajax-Projekt zu Ihrer Lösung hinzuzufügen und jedes Mal neu zu erstellen.

    
Kenneth 21.04.2013, 21:47
quelle
1

Dies könnte Ihnen helfen .. Ich habe das gleiche Problem zuvor, was ich getan habe, war ich löschte die Dateien im bin-Ordner dann neu erstellen Sie die Anwendung, fügte dann das andere Projekt im Hauptprojekt und dann beide neu erstellen.

"Datei oder Assembly konnte nicht geladen werden", aber ich weiß nicht, welches Projekt diese Assembly mit alter Nummer referenziert

    
Clyde 17.04.2013 14:41
quelle
1

Überprüfen Sie die Verweise auf Projekt A (für beide Projekte) und stellen Sie sicher, dass sie auf dieselbe Assembly und / oder dasselbe Projekt verweisen. (Häufigste Ursache) Die Manifestdefinition der gefundenen Assembly mit dem Namen xxx.dll stimmt nicht mit der Assemblierungsreferenz

    
the 99-percent 21.04.2013 18:18
quelle
1

Überprüfen Sie, ob Ihre Assembly "com.mycompany.myapp" kein AssemblyVersion-Attribut in der Datei AssemblyInfo.cs hat oder dass die Version keine Sternchen hat, die zur automatischen Generierung von Versionen führen.

Nur ein Gedanke.

    
Tamim Al Manaseer 11.06.2013 16:24
quelle