2

解决了!请参阅下面的我的自我回答。


我正在使用 Javascript 和 HTML 构建两个 Metro 风格的应用程序,它们将具有不同的表示层,但在底层有很多相似的功能。由于能够从 Javascript 调用 C# 方法,我可以将许多“通用”功能分解到 C# WinMd 库中,然后两个顶级应用程序都可以引用该库。

但是,我想重用一些纯 Javascript 的实用程序类型函数。似乎没有办法使用 Javascript(仅 C# 或 C++)创建“WinMD”。

在 .NET 世界中,我通常只是将任何文件打包为资源并从通用程序集中加载它。有没有办法可以将“通用”.js 文件作为资源添加到 WinMD,并通过一些应用程序感知 URL(即 ms-appx: 或 ms-resource: 或类似的东西)访问它?

4

2 回答 2

3

The trick is as follows:

  1. Add the file you wish to reuse to a WinMD class library project (e.g. "MyWinMdProj")
  2. Mark the resource as "content" in its property page (usually is by default)
  3. Add a reference to the class library from the top-level Metro app
  4. Use a script tag with the ms-appx protocol to reference the file, i.e.

< script src="ms-appx:///MyWinMdProj/path/to/file.js" >

Note the three slashes; "MyWinMdProj" is a folder relative the Metro app's package (i.e. ms-appx:///) as opposed to being its own top-level package.

Note that any file included in this manner will be exposed on the filesystem under C:\Program Files\WindowsApps - but all of your html, js, css, etc. files from the top-level app project already are anyway, so you're not any worse off in that regard than if you copied and pasted the code in between two (or more) different apps.

于 2012-05-17T18:56:44.533 回答
0

或者,您可以将脚本打包到 Nuget 包中,类似于 jQuery 和 Modernizer 的完成方式,然后只需为这两个项目添加 Nuget 引用。

http://www.nuget.org

于 2012-07-08T14:51:14.253 回答