У меня серьезные проблемы с загрузкой переносимой библиотеки .NET (для использования в стандартной среде .NET и Silverlight) из скрипта Python.
Версия файла .NET DLL — 4.0.3.319.233 (System.Core.DLL), IronPython — 2.7.1, работает в режиме 32bit/x86. Visual Studio 2010 с C# под .NET 4. Также установлено обновление Microsoft .NET KB2468871 для использования переносимой библиотеки (версия 2).
Если я попытаюсь загрузить библиотеку из скрипта Python:
clr.AddReferenceToFileAndPath(UsedPath+"\\MyNamespace\\MyPortableLibrary.dll")
к нему нельзя получить доступ, и когда скрипт достигает типа, он говорит: "атрибут [тип в переносимой сборке] пространства имен#' доступен только для чтения", указывая на то, что сборка не была загружена вообще (или как Silverlight и не может использоваться сценарием Python).
Изменение кода на: (класс сборки из System.Reflection)
PortableAssembly = Assembly.LoadFrom(UsedPath+"\\MyNamespace\\MyPortableLibrary.dll") # load through .NET Reflection, Python won't load Portable assembly properly!
clr.AddReference(PortableAssembly)
приводит к ошибке: exceptions.IOError. Сообщение: [Errno 2] Не удалось загрузить файл или сборку «System.Core, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes» или одна из его зависимости. Системе не удается найти указанный файл.
Последний код, кажется, работает, когда скрипт Python вызывается автоматически из другой программы .NET, создавая экземпляр собственного механизма Python, но выдает указанную выше ошибку, когда скрипт выполняется из проекта Python в Visual Studio. Настройки Python в VisualStudio, Tools\Options\Python Tools\Interpreter Options предназначены для режима x86/32bit. Все параметры среды показывают, что используется .NET 4.
Теперь у меня есть несколько способов исправить это из созданного на C#/.NET движка Python, но как я могу загрузить переносимую сборку в базовую среду выполнения IronPython, чтобы она работала в правильной среде .NET 4, не пытаясь загрузить любой материал .NET 2?
Обновление: я перезапустил и пересобрал свою портативную библиотеку после обновления MS KB2468871, а также удалил инструменты IronPython и Python для VS, заменив их версиями 2.7.3 и 1.5 (VS2010). Ошибка с «System.Core, Version=2.0.5.0» все еще возникает.