Как импортировать и вызывать.Net DeviceInformation.FindAllAsync из ironpython?

Кто-нибудь знает, как импортировать и получить доступ Windows.Devices.Enumeration.DeviceInformation.FindAllAsync() от IronPython?

У меня есть код C# для.Net 4.5 на Win8.1, который я пытаюсь перенести на Iron Python, например:

Фрагмент C#:

using Windows.Devices.Enumeration;

DeviceInformationCollection devices= await DeviceInformation.FindAllAsync( /* removed */ );

Тем не менее, я просто не могу импортировать сборку "Windows".

clr.AddReference("Windows")

результаты в:

IOError: System.IO.IOException: Could not add reference to assembly Windows

Кто-нибудь знает способ?

Вот мой полный тестовый пример (обновленный в свете некоторых комментариев):

import clr

clr.AddReference("System.Windows")
clr.AddReference("System.Linq")
clr.AddReference("System.Runtime")
clr.AddReference("System.Runtime.WindowsRuntime")
clr.AddReference("System.Runtime.InteropServices.WindowsRuntime")

print  clr.References

import System
from System.Runtime import *
from System.Runtime.InteropServices.WindowsRuntime import *
import Windows


Windows.Devices.Enumeration.DeviceInformation.FindAllAsync()

Выход:

(<mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<IronPython.SQLite, Version=2.7.5.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1>,
<IronPython.Wpf, Version=2.7.5.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1>,
<System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>,
<System.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>,
<System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>,
<System.Runtime.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>,
<System.Runtime.InteropServices.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>)

Traceback (most recent call last):
  File "notnet.py", line 17, in <module>
AttributeError: 'namespace#' object attribute 'Devices' is read-only

ОБНОВИТЬ:

см.: https://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications

так наивно опробовал его, я даже не уверен, что IronPython может импортировать файлы.winmd, или из-за возникшей ошибки проблема с разрешениями или отсутствующей зависимостью:

import clr
import sys
sys.path.append(r"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral")
sys.path.append(r"C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral")
clr.AddReferenceToFile("platform.winmd")
clr.AddReferenceToFile("Windows.winmd")

выход:

SystemError: Операция не поддерживается. (Исключение из HRESULT: 0x80131515)

0 ответов

Другие вопросы по тегам