.net – 如何在PowerShell中引用UWP类
发布时间:2020-12-14 04:07:39 所属栏目:Windows 来源:网络整理
导读:我想使用通用 Windows平台库中的数据类型,如何在PowerShell中引用包含的命名空间或程序集? 例如,我想用 Windows.Data.Json.JsonObject class来解析一些json. 如果这是一个常规的.NET类,我会做类似的事情 Add-Type -AssemblyName Windows.Data.Json$jsonObje
我想使用通用
Windows平台库中的数据类型,如何在PowerShell中引用包含的命名空间或程序集?
例如,我想用 如果这是一个常规的.NET类,我会做类似的事情 Add-Type -AssemblyName Windows.Data.Json $jsonObject = [Windows.Data.Json.JsonObject]::Parse('{data:["powershell","rocks"]}') 但这个策略让我失望: Add-Type : Cannot add type. The assembly 'Windows.Data.Json' could not be found. At line:1 char:1 + Add-Type -AssemblyName Windows.Data.Json + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Windows.Data.Json:String) [Add-Type],Exception + FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands.AddTypeCommand 现在,假设Windows.Data.Json命名空间的程序集是Windows.Data.Json.dll,我可能完全错了,但API引用实际上似乎不包含对包含文件的任何引用,我相信一个DLL文件实际上不是我应该寻找的. 我假设UWP有自己的酷GAC类商店,我可以从中加载共享库,我只是不知道如何. 基本上我的问题是,我如何将一个UWP共享库加载到PowerShell中,我应该如何引用UWP类型的文字? 在Windows 10上运行PowerShell 5.1(内部版本1703)
发布此问题后不久,我偶然发现
the GitHub repo for BurntToast,一个允许从PowerShell提升UWP Toast Notifications的模块,它引用了WinRT ToastNotificationManager类型,如下所示:
[Windows.UI.Notifications.ToastNotificationManager,Windows.UI.Notifications,ContentType = WindowsRuntime] 所以,看起来我对UWP类的语法是: [<class name>,<namespace>,ContentType = WindowsRuntime] 考虑到这一点,我尝试了我在问题中给出的例子,并且看到: PS C:&; $jsonObjectClass = [Windows.Data.Json.JsonObject,Windows.Data.Json,ContentType=WindowsRuntime] PS C:&; $jsonObject = $jsonObjectClass::Parse('{"data":["powershell","rocks"]}') PS C:&; $jsonObject Key Value --- ----- data ["powershell","rocks"] 在引用类型名称一次后,我似乎能够在类型文字中使用类名而不限定它: [Windows.Data.Json.JsonObject]::Parse("{}") # works without throwing errors now 尽管如此,仍然非常希望找到任何关于此的文档 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |