是否可以从非通用应用程序使用Wi-FiDirect?我一直在尝试编写一个简单的基于命令行的应用程序(在VisualStudio2015和Windows10中使用C#和.NET)以在Microsoft的通用示例之后启动Wi-FiDirect广告商,但手动添加必要的*参考。dll和*.winmd程序集,而不是创建UniversalWindowsPlatform项目。(来自ReffereAssemblies的System.Runtime.WindowsRuntime和来自WindowsKits10UnionMetadataWindows.winmd的Windows)这是相关代码:);如果(listenToConnections){mListener=newWiFiDirectConnectionListener();mListener.ConnectionRequested+=OnConnectionRequested;}mPublisher.StatusChanged+=OnStatusChanged;mPublisher.Advertisement.IsAutonomousGroupOwnerEnabled=true;);}asyncvoidOnConnectionRequested(WiFiDirectConnectionListenersender,WiFiDirectConnectionRequestedEventArgsconnectionEventArgs){//连接代码}广告商启动正常(可以从其他设备找到它,并创建必要的网络接口),但是当其他设备尝试连接时,OnConnectionRequested方法。我已经看到,要使用Wi-FiDirect,通用Windows应用程序必须将接近功能添加到其清单中,但对于通用应用程序,没有什么明显的。是否可以仅通过引用必要的程序集从非通用Windows应用程序使用Windows10WiFiDirectAPI?因此,我最终可以使用来自非通用Windows应用程序的WinRTAPI(包括Wi-FiDirect,即使未明确声明接近功能使用),但它在Windows10中比8或8.1有点棘手。编辑项目的*.csproj后,在组内添加以下行...10.0.10240.0您将在引用管理器中看到一个名为Windows的新部分,其中包含winmd库。它们都不起作用,您可能只需要添加两个库即可浏览:C:ProgramFiles(x86)WindowsKits10UnionMetadataWindows.winmdC:ProgramFiles(x86)ReferenceAssembliesMicrosoftFramework.NETCorev4.5System.Runtime.WindowsRuntime。dll有了这两个引用,就可以避免诸如“typeXXXXisdefinedinanassemblythatisnotreferenced”或者“namespaceXXXXisdefinedintwodifferentassemblies”之类的问题。但我们还没有完成!特别是在Wi-FiDirect中,一旦广告商、广告和其他计算机尝试连接,如果您有WiFiDirectConnectionListener的实例,您应该调用以下方法asyncvoidOnConnectionRequested(WiFiDirectConnectionListenersender,WiFiDirectConnectionRequestedEventArgsconnectionEventArgs)但您得到的是一个系统.BadImageFormatException。这是因为System.Runtime.WindowsRuntime.dll的实际版本与其清单中声明的??版本不同,因此无法加载。在VisualStudio中打开属性工具,选择System.Runtime.WindowsRuntime引用并更改以下属性:将本地复制为false,将特定版本复制为真。现在它应该工作了!C#学习教程就是这些:是否可以从非通用应用程序使用Wi-FiDirect?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
