Windows runtime 如何打包Windows运行时组件以进行分发?

Windows runtime 如何打包Windows运行时组件以进行分发?,windows-runtime,windows-store-apps,winjs,winmd,Windows Runtime,Windows Store Apps,Winjs,Winmd,我已经构建了一个WinRT组件(.winmd),供JavaScript和XAML Windows应用商店应用程序使用。在JavaScript客户端中包含并引用loose.winmd文件输出时,我看到以下生成警告: Microsoft.AppXPackage.Targets(808,9):警告APPX1707:未为.winmd文件“myRuntimeComponent.winmd”提供任何实现文件。要在应用程序清单中生成注册信息,请在项目文件中的.winmd引用项上指定“实现”元数据。 我找不到有

我已经构建了一个WinRT组件(.winmd),供JavaScript和XAML Windows应用商店应用程序使用。在JavaScript客户端中包含并引用loose.winmd文件输出时,我看到以下生成警告:

Microsoft.AppXPackage.Targets(808,9):警告APPX1707:未为.winmd文件“myRuntimeComponent.winmd”提供任何实现文件。要在应用程序清单中生成注册信息,请在项目文件中的.winmd引用项上指定“实现”元数据。

我找不到有关此错误或如何包含实现元数据的任何文档

运行JavaScript客户端时,调用从.winmd导出的类方法时会引发此异常:

0x80040154-JavaScript运行时错误:未注册类

请注意,我在引用客户端应用程序项目中的loose.winmd文件,而不是引用构建.winmd的Visual Studio项目。我的用例是分发.winmd输出,而不是.winmd组件的完整源代码-源代码分发不是一个选项

还要注意,当Windows运行时组件作为项目引用被引用时,JavaScript客户端将正确构建和运行。C#XAML客户端使用项目引用或对loose.winmd的引用正确运行

当引用loose.winmd时,客户端应用程序生成中似乎没有生成某些注册信息


如何构建和分发一个松散的Windows运行时组件以供JavaScript和托管客户端使用?

使用C#或VB构建的WinRT组件生成一个包含元数据和实现的.winmd。一个用C++构建的组件提供了独立的.WiMD和.dll文件,而DLL包含了登记组件的细节。 显然,如警告所示,您需要使用以下内容编辑项目文件以指向DLL:

<Reference Include="component">
  <HintPath>component.winmd</HintPath>
  <IsWinMDFile>true</IsWinMDFile>
  <Implementation>component.dll</Implementation>
</Reference>

component.winmd
真的
组件.dll

或者,您可能希望查看扩展SDK。请参阅以下链接,了解如何在VS中将组件打包为易于使用的扩展SDK:


您也需要组件中的.dll。编译组件时,它必须生成一个.winmd文件和一个.dll文件。不幸的是,情况并非如此-没有生成dll。输出文件包括.winmd、.pri和.pdb。嘿,Jesse,您是否找到了解决问题的方法?这似乎是打包Windows运行时组件的唯一方法,该组件由多个体系结构的C++/CX库组成。否则,VisualStudio将拒绝将DLL复制到移动设备、忽略它或无法正确使用它。