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

Jes*_*ton 6 windows-runtime winjs windows-store-apps winmd

我已经构建了一个WinRT组件(.winmd)供JavaScript和XAML Windows Store应用程序使用.在JavaScript客户端中包含和引用松散的.winmd文件输出时,我看到此构建警告:

Microsoft.AppXPackage.Targets(808,9):警告APPX1707:没有为.winmd文件'myRuntimeComponent.winmd'提供实现文件.要在应用清单中生成注册信息,请在项目文件中的.winmd引用项上指定"实现"元数据.

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

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

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

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

另请注意,当Windows运行时组件作为项目引用引用时,JavaScript客户端将构建并正确运行.C#XAML客户端可以使用项目引用或对松散.winmd的引用正确运行.

当引用松散的.winmd时,似乎在客户端应用程序构建中没有生成某些注册信息.

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

Kra*_*SFT 6

使用C#或VB构建的WinRT组件生成包含元数据和实现的.winmd.使用C++构建的组件提供单独的.winmd和.dll文件,DLL包含注册组件的详细信息.

显然,正如警告所示,您需要使用以下内容编辑项目文件以指向DLL:

<Reference Include="component">
  <HintPath>component.winmd</HintPath>
  <IsWinMDFile>true</IsWinMDFile>
  <Implementation>component.dll</Implementation>
</Reference>
Run Code Online (Sandbox Code Playgroud)