Ich habe eine neue Metro Split App in C++ mit VS2012 auf Win8 (beide RC) erstellt. Alles kompiliert und ausgearbeitet. Ich habe dann geändert und die generierten Namespaces zu meinen eigenen geändert. Nach ein paar Versuchen und Schwierigkeiten habe ich alles kompiliert, ohne Warnungen, Fehler oder Nachrichten. Die App (wie sie in der Projektvorlage enthalten ist) läuft gut.XAML kann keine Referenz im lokalen Namespace finden
aber wenn ich versuche, eine der beiden generierten XAML-Dateien (ItemsPage.xaml oder SplitPage.xaml) Ich habe ein „Markup-Fehler“ erhalten bearbeiten in der ersten Zeile:
Der Name „LayoutAwarePage“ existiert nicht im Namespace "using: ABProduct.Client.Common".
Die Definition der Klasse ist:
namespace A{ namespace B { namespace Product { namespace Client { namespace Common
Der Code kompiliert in Ordnung, und läuft gut. Dies geschieht nur im Entwurfsmodus.
UPDATE: Ich habe eine neue XAML-Datei hinzugefügt und (nachdem ich die Namespaces wieder eingerichtet habe) hat alles funktioniert.
Bitte lassen Sie mich wissen, wenn zusätzliche Informationen benötigt werden.
Wie lautet der Name der von Ihrem Projekt erstellten .winmd-Datei? Der Name der .winmd-Datei muss ein Präfix des Namensbereichs sein. Für diesen Namespace muss der .winmd also A.winmd, A.B.winmd, A.B.Product.winmd, A.B.Product.Client.winmd oder A.B.Product.Client.Common.winmd heißen. Diese Anforderung wird von der Laufzeit für öffentliche Typen in Komponenten (dlls) festgelegt. Der Designer lädt die exe jedoch als DLL. Wenn Sie also den Designer verwenden möchten, müssen Ihre Klassen auch in Anwendungsprojekten denselben Namensanforderungen entsprechen. –
[Wenn das nicht hilft, bitte lass es mich wissen und ich kann helfen zu untersuchen.] –
Fantastisch! Die WinMD-Datei war einfach Client.winmd. Ich habe das Projekt entladen, den Stammnamespace in A.B.Product.Client geändert, das Projekt neu geladen und neu erstellt. Die WinMD-Datei heißt nun A.B.Product.Client und XAML wird korrekt geladen. Das ist definitiv die Antwort. Wenn Sie Ihren Kommentar als Antwort hinzufügen möchten, markiere ich ihn. – basilard99