6 Stimmen

vb.net Kompilierfehler 'abc' ist mehrdeutig im Namensraum 'xyz'

Ich habe eine VB.Net-Lösung, die ein anderer Entwickler erstellt hat, und ich versuche, sie auf unserer Build-Maschine zu kompilieren (sie kompiliert auf ihrer Maschine), aber bei einem der Projekte erhalte ich eine Fehlermeldung, die etwas in der Art von sagt:

Imyinterface ist im Namensraum mehrdeutig anamespaceassembly .

Ich habe es versucht, aber ohne Erfolg:

  • die Referenzen auf offensichtliche Fehler hin überprüft
  • die betreffende Baugruppe entfernt und wieder eingebaut
  • das System nach der gleichen DLL durchsucht
  • versucht, die src des ursprünglichen Entwicklers zu kompilieren (.v die Version der Versionskontrolle)
  • die Baugruppe mit ildasm.exe untersucht

Ich in der Regel Code in C# und haben diesen Fehler nicht gesehen, bevor (in dieser Form zumindest), nicht, dass es VB.Net-spezifisch ist, aber die UI für das Hinzufügen/Anzeigen von Verweisen ist etwas anders, so dass ich dachte, vielleicht VB.Net etwas anders mit Verweisen tun könnte.

Ich habe auch versucht, auf einem anderen Rechner zu kompilieren, und es funktioniert. Also nehme ich an, es ist etwas mit der Build-Maschine, aber ich bin nicht sicher, was. Andere widersprüchliche Baugruppen irgendwie nicht durch das Projekt referenziert, ist das möglich?

Irgendwelche Ideen?

4 Stimmen

Ansicht + Objektbrowser, "Imyinterface" eingeben, Enter. Was wird angezeigt?

6voto

desolit Punkte 61

Überprüfen Sie Ihre Referenzen, wenn Sie zwei Versionen der gleichen Referenz haben (z.B. Microsoft.ReportViewer.Webforms Version 10.0.0.0 und Microsoft.ReportViewer.Webforms 8.0.0.0) Sie erhalten diesen Fehler. Löschen Sie die älteste Version und Sie sollten keine Probleme mehr haben. Ich tue mir das immer wieder an.

2voto

Abel Punkte 53946

Für diesen Fehler kann es mehrere Ursachen geben. In VB sollten Sie sich bewusst sein, dass ohne Klassenspezifikation mehr Namen zur Verfügung stehen, als Sie es von C# gewohnt sind. Außerdem spielt die Groß-/Kleinschreibung in VB keine Rolle, was die Wahrscheinlichkeit von Kollisionen weiter erhöhen kann.

Selbst für den Fall, dass Sie den eigentlichen Konflikt nicht finden, können Sie ihn auf die gleiche Weise lösen wie in C#: Benennen Sie ihn in der Datei Imports Erklärung:

Imports IM = yourAssembly.Imyinterface

Dann ändern Sie den Code so, dass die Verwendung von Imyinterface werden ersetzt durch IM .

HINWEIS: Wenn der Fehler nicht auf eine bestimmte Zeile hinweist, liegt der Konflikt möglicherweise nicht in Ihrer Hand. Normalerweise hilft ein vollständiges Clean Solution und Rebuild sehr, aber gelegentlich führt eine fehlerhafte Datei (d.h. ein anderer Fehler) dazu, dass dieser Fehler zuerst auftaucht, ohne dass die Quelle klar ist. Versuchen Sie, die letzten Änderungen an der Stelle zurückzusetzen, an der sie funktioniert haben.

Sie sagen auch, dass es auf einem anderen Rechner funktioniert hat. Es besteht die Möglichkeit, dass auf Ihrem Rechner eine andere Version von MS Visual Studio oder .NET installiert ist. Prüfen und vergleichen Sie die genauen Versionen.

1voto

Ich stand vor dem gleichen Problem. Ich aktualisierte meine Anwendung von vb6 zu vb.net und wenn ich die Build-Konfiguration von DEBUG zu RELEASE ändern, dann bekam ich AMBIGUOUS Fehler. Ich fand doppelte Verweise Ordner in Lösung Explorer. Ich habe diese doppelten Verweise entfernt und erfolgreich erstellt. Ich hoffe, es kann anderen helfen.

0voto

Gern Blanston Punkte 42064

Vielen Dank für die Antworten! Ich habe alles ausprobiert, aber ich hatte immer noch Probleme.

Eine Information, die ich in der ursprünglichen Frage ausgelassen hatte, war, dass die VB.net-Projekte Upgrades von VB6-Projekten sind. Zu der Zeit dachte ich nicht, dass das relevant ist.

Nach weiteren Untersuchungen wurde die Build-Maschine auch zum Erstellen der VB6-Projekte verwendet. Also führte ich 'reg32 /u' auf die vb6 dlls aus und das schien das VB.net Problem zu beheben.

Ich bin mir nicht ganz sicher, warum das Problem dadurch behoben wurde, da ich nicht auf die VB6-DLLs verwiesen habe. Ich vermute, dass es etwas mit mehrdeutigen Einträgen in der Registrierung zu tun hat, die das VB.net-Projekt verwirren.

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