我构建了一个WinRT组件(.winmd)供JavaScript和XAML Windows应用商店应用使用。在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和托管客户端使用?
答案 0 :(得分: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>
答案 1 :(得分:1)
或者,您可能需要查看扩展SDK。请参阅以下链接,了解如何将组件打包为VS中易于使用的Extension SDK: