错误APPX1706:使用xaml创建winrt dll

错误APPX1706:使用xaml创建winrt dll,xaml,windows-phone-8,windows-runtime,windows-store-apps,Xaml,Windows Phone 8,Windows Runtime,Windows Store Apps,我用Page.xaml和App.xaml文件构建了一个WinRT(WindowsPhone8.1)dll。 接下来,我在wp8.1应用程序项目中添加对这个winmd的引用 我得到以下错误: error APPX1706: The .winmd file 'project.winmd' contains type '?A0x32772d97.project_XamlTypeInfo.XamlMetaDataProvider' outside its root namespace 'project

我用Page.xaml和App.xaml文件构建了一个WinRT(WindowsPhone8.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.

WinMD库基本上是带有一些元数据信息的常规库(DLL)。这些元数据信息将允许从不同的语言使用它。例如,您可以在C++中创建一个WIMD库,并从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 { ... } }

我已经用“Foo”替换了所有的“Bar”名称空间。WinMD库基本上是一个带有一些元数据信息的常规库(DLL)。这些元数据信息将允许从不同的语言使用它。例如,您可以在C++中创建一个WIMD库,并从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 { ... } }

我已经用“Foo”替换了所有的“Bar”名称空间。WinMD库基本上是一个带有一些元数据信息的常规库(DLL)。这些元数据信息将允许从不同的语言使用它。例如,您可以在C++中创建一个WIMD库,并从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 { ... } }

我已经用“Foo”替换了所有的“Bar”名称空间。WinMD库基本上是一个带有一些元数据信息的常规库(DLL)。这些元数据信息将允许从不同的语言使用它。例如,您可以在C++中创建一个WIMD库,并从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 { ... } }
我已经用“Foo”替换了所有的“Bar”名称空间