【问题标题】:Error APPX1706: creating winrt dll with xaml错误 APPX1706:使用 xaml 创建 winrt dll
【发布时间】:2015-06-02 21:14:06
【问题描述】:

我用 Page.xaml 和 App.xaml 文件构建了一个 WinRT(Windows phone 8.1) dll。 接下来,我在 wp8.1 应用项目中添加对这个 winmd 的引用。

我收到以下错误:

error APPX1706: The .winmd file 'project.winmd' contains type 
'?A0x32772d97.project_XamlTypeInfo.XamlMetaDataProvider' outside its root namespace
'project'. Make sure that all public types appear under a common root namespace
that matches the output file name.

【问题讨论】:

    标签: xaml windows-phone-8 windows-runtime windows-store-apps


    【解决方案1】:

    WinMD 库基本上是带有一些元数据信息的常规库 (DLL)。这些元数据信息将允许它以不同的语言使用。例如,您可以在 C# 中创建一个 WinMD 库并在 C++ 或 JS 应用程序中使用它。

    由于 WinMD 库可以被不同的语言使用,它们都符合 Windows 运行时规则。

    您的具体问题是 WinMD 文件的规则之一规定所有类必须属于同一个根命名空间。 这意味着如果你有以下代码:

    A.cs
    namespace Foo { class A { ... } }
    
    B.cs
    namespace Foo.Sub { class B { ... } }
    
    C.cs
    namespace Bar { class C { ... } }
    
    D.cs
    namespace Bar.Sub { class D { ... } }
    

    WinMD 链接器将返回您看到的错误。 要解决它,您必须在同一个根命名空间中声明所有类:

     A.cs
    namespace Foo { class A { ... } }
    
    B.cs
    namespace Foo.Sub { class B { ... } }
    
    C.cs
    namespace Foo { class C { ... } }
    
    D.cs
    namespace Foo.Sub { class D { ... } }
    

    我已将所有“Bar”命名空间替换为“Foo”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多