it-swarm.com.de

WPF: Der Name existiert nicht im Namespace

Ich baue eine C #/WPF-Anwendung mit VS2013 und habe folgende Klassendefinition (in derselben Assembly der laufenden Anwendung):

namespace MyNamespace
{
    public class MyKey
    {
        public MyKey() { }
        public string name = "";
    }
}

In MainWindow.xaml habe ich:

<Window x:Class="MyNamespace.MainWindow"
        xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyNamespace"
        Title="MainWindow" Height="350" Width="525" WindowState="Maximized" WindowStyle="None">
    <Window.Resources>
        <local:MyKey x:Key="key" />
    </Window.Resources>
...

VS berichtet das ständig 

Der Name "MyKey" existiert nicht im Namespace "clr-namespace: MeinNamespace"

Irgendwelche Ideen?

P.S. Ich habe die folgenden Lösungen ausprobiert (von bereits gestellten Fragen in stackoverflow), aber keine davon funktionierte:

  1. Verschieben der Klasse in einen anderen Namespace und Verwenden des neuen Namespaces in Xaml-Referenz
  2. VS neu starten und Lösung reinigen/neu erstellen
  3. reinigung der Lösung, Umbenennen des Ordners und erneutes Erstellen der Lösung
  4. verweis ändern auf:

xmlns: local = "clr-namespace: MyNamespace; Assembly ="

Bearbeiten: Zusätzliche Informationen: Die Zielarchitektur: X64, Zielframework: .Net 4.5

23
Ibraheem

Eine häufige Lösung für diesen bekannten VS-Fehler, den Sie nicht angegeben haben, ist das Ändern der Build-Zielplattform. 

  1. Wenn Ihre aktuelle Build-Zielplattform x64 ist, ändern Sie in x86. Wenn es derzeit x86 ist, ändern Sie in x64.

  2. Clean and Build-Lösung für neue Zielplattform.

  3. Wechseln Sie wieder zur gewünschten Zielplattform und bauen Sie sie erneut auf. 

50
Gordon True

Ich hatte dieselbe Ausgabe in der VS2012 Express Edition. Problem mit dem Befehl gelöst

"WDExpress/ResetSettings" in der Eingabeaufforderung von vs2012.

https://stackoverflow.com/a/33706647/4855197

2
Adeeb Arangodan

Eine mögliche Lösung besteht darin, alle Dateien .dll aus dem Ordner Debug und Release zu entfernen.

Wenn Sie sich auf das Projekt beziehen, bezieht es sich manchmal auf die vorgefertigten DLLs, auch wenn Sie Ihr Projekt im Debug-Modus ausführen.

Entfernen Sie alle Dateien aus dem Ordner " debug und release " und erstellen Sie das Projekt erneut. Fügen Sie nun dem gewünschten Projekt eine Referenz dieses Projekts hinzu. Funktionierte perfekt an meinem Ende. 

1
Khawaja Asim

Wenn ich auf dieses Problem stoße, bemerkte ich normalerweise, dass Visual Studio Fehler in der Fehlerliste auflistet und mich auf eine falsche Spur bringt. Ein Blick in die tatsächliche Build-Ausgabe im Ausgabefenster von Visual Studio ergab den korrekten Fehler. 

Kurz gesagt: Vergleichen Sie Ihre Build-Ausgabe mit Ihrer Fehlerliste.

0
Daniel

Ausführen von VS Enterprise 2017 Version 15.6.2 Targeting .Net 4.6.1

Ich hatte das gleiche Problem mit einer UserControl-Xaml-Seite, bei der in ihren Ressourcen versucht wurde, auf einen ValueConverter zu verweisen. Der Namespace war korrekt, der Intellisense würde ihn sogar für Sie ablegen, aber der Designer würde die Seite nicht laden und den Code nicht kompilieren. Ich habe sogar versucht, einen der Wertkonverter aus dem betreffenden Datei- und Namespace zu verschieben und in den dahinter liegenden Code zu verschieben. VS wurde so ausgeflippt, dass es behauptete, die Methode InitializeComponent () im Code-Behind-Konstruktor sei nicht vorhanden. 

Ich glaube, es war für mich endgültig behoben, als ich bemerkte, dass der ValueConverter-Klasse das führende Attribut wie folgt fehlte:

[ValueConversion (typeof (Zeichenfolge), typeof (dezimal))]

Nachdem ich diese Zeile hinzugefügt hatte, habe ich eine schnelle Lösung erstellt, sie wurde kompiliert und dann kompiliert und gearbeitet. Dann konnte der xaml plötzlich alle Validierungsregeln und Wertkonverter in dieser Datei sehen. Und jetzt habe ich festgestellt, dass die anderen 3 Wertkonverter in dieser Datei auch kein ValueConversion-Attribut enthalten und der Code trotzdem kompiliert wird. Vielleicht war etwas über die eingehenden Typen in diesem ersten Konverter vage.

Es ist immer noch ein Rätsel. Ich weiß, ich sollte meine Änderung rückgängig machen und sehen, ob der Fehler reproduzierbar ist, aber nachdem ich den Code den größten Teil des Tages bekämpft habe, habe ich es satt, ihn anzusehen. Es war ein altes Prism-Projekt, das nicht lief und ich habe es auf Prism 7.0-Bibliotheken aufgerüstet. Ich habe auch versucht, alle Prozessoreinstellungen auf "Any CPU" zurückzusetzen. Es beschwerte sich darüber, dass der Bootstrapper veraltet war, aber ich hatte es ignoriert. Ich hatte alles mehrmals neu gestartet und gereinigt. Ich hatte sogar den .vs-Ordner gelöscht. Ich hätte wahrscheinlich früher versuchen sollen, die Obj- und Bin-Ordner zu löschen - das ist das einzige, was ich nicht getan habe.

Das war nicht mein Projekt. Normalerweise baue ich Wertkonverter immer in eine Datei mit der gleichnamigen Datei. Ich würde nicht glauben, dass das eine Rolle spielen würde, aber der ganze Fehler war von Anfang an ein bisschen verrückt.

0
Kevin Sherrill

Ich hatte ein ähnliches Problem. Für mich war es das Ändern der Build-Eigenschaften des Projekts, das als Referenz hinzugefügt wurde. Es stellte sich heraus, dass das "Plattformziel" in der Vergangenheit geändert wurde. Durch die Einstellung auf "Beliebige CPU" und das erneute Erstellen wurde der Fehler behoben.

0
karstenp