bas*_*d99 9 microsoft-metro windows-8 visual-studio-2012
我在Win8(均为RC)上使用VS2012在C++中创建了一个新的Metro Split应用程序.所有东西都是编译和开箱即用的.然后我改变了,并将生成的命名空间更改为我自己的命名空间.经过一些考验和磨难之后,我得到了所有编译而没有任何警告,错误和消息.应用程序(因为它在项目模板中)运行正常.
但是,如果我尝试编辑生成的xaml文件(ItemsPage.xaml或SplitPage.xaml),我会在第一行得到"标记错误":
名称"LayoutAwarePage"在命名空间"using using:ABProduct.Client.Common"中不存在.
该类的定义是:
namespace A{ namespace B { namespace Product { namespace Client { namespace Common
Run Code Online (Sandbox Code Playgroud)
代码编译好,运行正常.这只发生在设计模式中.
更新:我添加了一个新的xaml文件和(在再次修复名称空间后)一切正常.
如果需要任何其他信息,请告诉我.
项目生成的WinMD文件的名称必须是定义公共WinRT类型的名称空间的一些前缀.鉴于您的类型位于A.B.Product.Client.Common命名空间中,WinMD文件必须具有以下名称之一:
A.winmd
A.B.winmd
A.B.Product.winmd
A.B.Product.Client.winmd
A.B.Product.Client.Common.winmd
Run Code Online (Sandbox Code Playgroud)
还必须在WinMD文件中定义公共类型,其中包含与命名空间匹配的最长前缀.因此,如果您同时拥有A.winmd和ABwinmd,则A.B.MyClass必须在ABwinmd中定义类型.
那么,为什么你的代码在运行时而不是在设计器中工作?公共类型的命名规则仅适用于Windows运行时组件(对于C++,DLL文件)中定义的类型,而不适用于应用程序(EXE).
但是,为了能够实例化用户定义的类型(包括LayoutAwarePage),设计器会将项目的EXE作为DLL加载,因此必须遵循命名规则.
| 归档时间: |
|
| 查看次数: |
6258 次 |
| 最近记录: |