我使用Win8(均爲RC)上的VS2012在C++中創建了一個新的Metro Split App。所有的東西都是編譯出來的。然後,我改變了過去,並將生成的命名空間更改爲我自己的。在經歷了一些考驗和磨難之後,我得到了一切都沒有警告,錯誤和消息的編譯。該應用程序(因爲它在項目模板中)運行良好。XAML無法在本地命名空間中找到引用
但是,如果我嘗試編輯無論是在第一線所產生的XAML文件(ItemsPage.xaml或SplitPage.xaml)我得到一個「標記錯誤」的:
「LayoutAwarePage」的名稱不存在在命名空間「using:ABProduct.Client.Common」中。
類的定義是:
namespace A{ namespace B { namespace Product { namespace Client { namespace Common
代碼編譯罰款,並運行良好。這隻發生在設計模式中。
更新:我添加了一個新的xaml文件和(修復命名空間後)一切工作。
請讓我知道是否需要任何額外的信息。
您的項目生成的.winmd文件的名稱是什麼? .winmd文件的名稱必須是名稱空間名稱的前綴。因此,對於該名稱空間,必須將.winmd命名爲A.winmd,A.B.winmd,A.B.Product.winmd,A.B.Product.Client.winmd或A.B.Product.Client.Common.winmd。此要求由組件(dll)中的公共類型的運行時強制實施。但是,設計者最終會將你的exe加載爲一個dll,所以如果你想使用這個設計器,你的類也必須在應用程序項目中匹配相同的命名要求。 –
[如果這沒有幫助,請讓我知道,我可以幫助調查。] –
太棒了! WinMD文件只是Client.winmd。我卸載了該項目,將根名稱空間更改爲A.B.Product.Client,然後重新加載並重建項目。 WinMD文件現在稱爲A.B.Product.Client,並且XAML正確加載。這絕對是答案。如果你想添加你的評論作爲答案,我會標記它。 – basilard99