Компиляция Python для .NET для .NET3.5 и Python3.x

Недавно я работал над проектом, который должен использовать библиотеку .NET 3.5 Dll, и команда использует среду Python3.x.

Поэтому я зашел в репозиторий Python для .NET на github, скачал исходный код и попытался скомпилировать сам. с помощью Visual Studio 2013.

В исходниках есть файл решения MVSC с именем pythonnet, и я только что открыл проект и попытался скомпилировать Python.Runtime.

По умолчанию Conditional compilation symbols равно PYTHON27, UCS4. Поэтому я изменил его на PYTHON35, UCS2, чтобы он соответствовал моему требованию. И мне удалось его успешно скомпилировать. python35

Но так как он должен работать с .NET Framework 3.5, то я изменил Target Framework с .NET Framework 4.0 на .NET Framework 3.5. Но на этот раз я получил много ошибок при компиляции и компиляция не удалась.DotNET3.5

Может ли кто-нибудь помочь мне с компиляцией, чтобы я мог скомпилировать Python для .NET, который работает как для .NET 3.5, так и для Python3.x. ?


person 2342G456DI8    schedule 27.05.2016    source источник
comment
Зачем минусовать? могу я узнать почему?   -  person 2342G456DI8    schedule 27.05.2016


Ответы (1)


Последний pythonnet использует HashSet из CLR 4.0, а также dynamic из DLR, которые нельзя легко перенести в более старые версии .NET.

Что вы можете сделать, так это перенаправить другие библиотеки DLL с .NET 3.5 на CLR 4.0 с помощью app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
</configuration>
person denfromufa    schedule 27.05.2016
comment
Большое спасибо за ваш ответ! Но проблема в том, что другие мои библиотеки DLL предоставлены сторонними организациями, а это значит, что у меня нет для них исходного кода. Есть ли способ конвертировать? - person 2342G456DI8; 28.05.2016
comment
Вы можете просто ссылаться на сторонние библиотеки .NET 2.0 из проекта Visual Studio, настроенного для .NET 4.0. Я все время это делаю! - person denfromufa; 28.05.2016
comment
Большое спасибо за ваш быстрый ответ. Но я напрямую использую DLL из Python от Pythonnet, без участия проекта Visual Studio. Я не совсем понимаю, что вы имеете в виду. - person 2342G456DI8; 28.05.2016
comment
Если вы напрямую используете стороннюю .NET 3.5 dll из python с помощью pythonnet, то app.config следует разместить рядом с исполняемым файлом python — python.exe.config — это другой exe, если вы используете ipython, ptipython и т. д. - person denfromufa; 28.05.2016