Как импортировать и вызывать.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)