使用C#在Windows 8.1 / Windows 10上开发Cordova插件

5

是否可以使用C#编写Windows(8.1/10)的Cordova插件?或者,可以将用C#编写的库组件包装为Cordova插件吗?如果没有遗漏的话,MSDNApache文档仅显示如何在Windows Phone 8中使用C#(预计在“Windows Universal”中使用JS实现)。


本指南介绍如何为Windows Phone 8和Windows Universal创建插件:https://taco.visualstudio.com/en-us/docs/create-plugin-windows-phone/ - andreszs
1个回答

2
是的,但有一些要求。首先,您的库必须是一个Windows Runtime组件项目。您可以在插件中引用winmd或csproj(请参见https://cordova.apache.org/docs/fr/latest/guide/platforms/win8/plugin.html)。如果您的插件在运行时有效且正确加载到应用程序中,则可以直接在JavaScript中使用您的C#类(它只是WinJS)。您需要在插件中公开一个C#库的JavaScript包装器,但这不是强制性的(只是常规做法,以最大程度地共享其他平台实现插件的代码)。

你尝试过在发布模式下构建这样的项目吗?我目前在创建应用程序包时遇到了麻烦,因为我需要使用 .net native,但它并不能产生良好的结果。它只是不会将所需的 .dll 文件打包到 .appx 中。 - stipe
是的,我只需要针对每个特定架构(x86、x64、ARM)逐个创建包,因为我的Windows运行时组件是用C++编写的:束并不适用于我的项目。如果您想使用.NET原生功能,则在您的情况下,任何CPU模式都不是一个选项。但是,对于标准的C# Cordova插件,不需要使用.NET原生功能,您可以仅构建一个包(使用任何CPU模式)。 - t.ouvre
如果我不使用.NET本机编译构建,则商店会抱怨不支持的API,例如“api-ms-win-core-synch-l1-1-0.dll中的OpenSemaphore API不支持此应用程序类型。System.Threading.dll调用此API”。这是一件奇怪的事情,我不确定商店提交流程是否覆盖了此用例。尽管如此,我通过在JS中实现所有内容并且不处理Windows Runtime组件、.NET本机和.dll文件来解决了这个问题。 - stipe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接