diff --git a/.travis.yml b/.travis.yml
index d6fcc4a88..2468ed60a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,145 @@
+dist: trusty
sudo: false
-
language: python
-python:
- - 2.7
- - 3.3
- - 3.4
- - 3.5
- - 3.6
- - 3.7-dev
-
+
matrix:
- allow_failures:
- - python: 3.7-dev
+ include:
+ - python: 2.7
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: 3.3
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: 3.4
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: 3.5
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: 3.6
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: "3.7-dev"
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
+ addons:
+ apt:
+ sources:
+ - sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
+ key_url: https://packages.microsoft.com/keys/microsoft.asc
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
+ packages:
+ - mono-devel
+ - ca-certificates-mono
+ - dotnet-hostfxr-2.0.0
+ - dotnet-runtime-2.0.0
+ - dotnet-sdk-2.0.0
+ - python: 2.7
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: 3.3
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: 3.4
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: 3.5
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: 3.6
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: "3.7-dev"
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ allow_failures:
+ - python: "3.7-dev"
+ env:
+ - BUILD_OPTS=
+ - NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
+ - python: "3.7-dev"
+ env:
+ - BUILD_OPTS=--xplat
+ - NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
env:
global:
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
@@ -23,8 +150,8 @@ env:
addons:
apt:
sources:
- - mono
- - mono-libtiff-compat
+ - sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
+ key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
packages:
- mono-devel
- ca-certificates-mono
@@ -37,11 +164,11 @@ before_install:
install:
- pip install --upgrade setuptools # TEMP - due to setuptools 36.2.0 bug
- pip install --upgrade -r requirements.txt
- - coverage run setup.py install
+ - coverage run setup.py install $BUILD_OPTS
script:
- python -m pytest
- - mono ./packages/NUnit.*/tools/nunit3-console.exe src/embed_tests/bin/Python.EmbeddingTest.dll
+ - mono $NUNIT_PATH src/embed_tests/bin/Python.EmbeddingTest.dll
after_script:
# Uncomment if need to geninterop, ie. py37 final
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ae62d692..e5929107b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,10 @@ This document follows the conventions laid out in [Keep a CHANGELOG][].
## [unreleased][]
### Added
+- Added new build system (pythonnet.15.sln) based on dotnetcore-sdk/xplat(crossplatform msbuild).
+ Currently there two side-by-side build systems that produces the same output (net40) from the same sources.
+ After a some transition time, current (mono/ msbuild 14.0) build system will be removed.
+- NUnit upgraded to 3.7 (eliminates travis-ci random bug)
- Added `clr.GetClrType` (#432, #433)
- Allowed passing `None` for nullable args (#460)
- Added keyword arguments based on C# syntax for calling CPython methods (#461)
diff --git a/NuGet.config b/NuGet.config
new file mode 100644
index 000000000..719fbc83c
--- /dev/null
+++ b/NuGet.config
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
index 2f1103f5a..c7c3a7810 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,6 +1,9 @@
version: '{branch}-{build}'
build: off
+image:
+ - Visual Studio 2017
+
platform:
- x86
- x64
@@ -12,6 +15,16 @@ environment:
CODECOV_ENV: PYTHON_VERSION, PLATFORM
matrix:
+ - PYTHON_VERSION: 2.7
+ BUILD_OPTS: --xplat
+ - PYTHON_VERSION: 3.3
+ BUILD_OPTS: --xplat
+ - PYTHON_VERSION: 3.4
+ BUILD_OPTS: --xplat
+ - PYTHON_VERSION: 3.5
+ BUILD_OPTS: --xplat
+ - PYTHON_VERSION: 3.6
+ BUILD_OPTS: --xplat
- PYTHON_VERSION: 2.7
- PYTHON_VERSION: 3.3
- PYTHON_VERSION: 3.4
@@ -29,6 +42,7 @@ init:
install:
- pip install --upgrade -r requirements.txt --quiet
+ - choco install vswhere -y
# Install OpenCover. Can't put on `packages.config`, not Mono compatible
- .\tools\nuget\nuget.exe install OpenCover -OutputDirectory packages -Verbosity quiet
@@ -37,7 +51,7 @@ build_script:
# Create clean `sdist`. Only used for releases
- python setup.py --quiet sdist
# Build `wheel` with coverage of `setup.py`
- - coverage run setup.py bdist_wheel
+ - coverage run setup.py bdist_wheel %BUILD_OPTS%
test_script:
- pip install --no-index --find-links=.\dist\ pythonnet
diff --git a/ci/appveyor_run_tests.ps1 b/ci/appveyor_run_tests.ps1
index 4245d1577..2821cf915 100644
--- a/ci/appveyor_run_tests.ps1
+++ b/ci/appveyor_run_tests.ps1
@@ -11,7 +11,12 @@ if ($FALSE -and $env:PLATFORM -eq "x86"){
# Executable paths for OpenCover
# Note if OpenCover fails, it won't affect the exit codes.
$OPENCOVER = Resolve-Path .\packages\OpenCover.*\tools\OpenCover.Console.exe
-$CS_RUNNER = Resolve-Path .\packages\NUnit.*\tools\"$CS_RUNNER".exe
+if ($env:BUILD_OPTS -eq "--xplat"){
+ $CS_RUNNER = Resolve-Path $env:USERPROFILE\.nuget\packages\nunit.consolerunner\*\tools\"$CS_RUNNER".exe
+}
+else{
+ $CS_RUNNER = Resolve-Path .\packages\NUnit.*\tools\"$CS_RUNNER".exe
+}
$PY = Get-Command python
# Can't use ".\build\*\Python.EmbeddingTest.dll". Missing framework files.
diff --git a/pythonnet.15.sln b/pythonnet.15.sln
new file mode 100644
index 000000000..121631e43
--- /dev/null
+++ b/pythonnet.15.sln
@@ -0,0 +1,194 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26730.3
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.Runtime.15", "src\runtime\Python.Runtime.15.csproj", "{2759F4FF-716B-4828-916F-50FA86613DFC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.EmbeddingTest.15", "src\embed_tests\Python.EmbeddingTest.15.csproj", "{66B8D01A-9906-452A-B09E-BF75EA76468F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "clrmodule.15", "src\clrmodule\clrmodule.15.csproj", "{E08678D4-9A52-4AD5-B63D-8EBC7399981B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Console.15", "src\console\Console.15.csproj", "{CDAD305F-8E72-492C-A314-64CF58D472A0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.Test.15", "src\testing\Python.Test.15.csproj", "{F94B547A-E97E-4500-8D53-B4D64D076E5F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ DebugMono|x64 = DebugMono|x64
+ DebugMono|x86 = DebugMono|x86
+ DebugMonoPY3|x64 = DebugMonoPY3|x64
+ DebugMonoPY3|x86 = DebugMonoPY3|x86
+ DebugWin|x64 = DebugWin|x64
+ DebugWin|x86 = DebugWin|x86
+ DebugWinPY3|x64 = DebugWinPY3|x64
+ DebugWinPY3|x86 = DebugWinPY3|x86
+ ReleaseMono|x64 = ReleaseMono|x64
+ ReleaseMono|x86 = ReleaseMono|x86
+ ReleaseMonoPY3|x64 = ReleaseMonoPY3|x64
+ ReleaseMonoPY3|x86 = ReleaseMonoPY3|x86
+ ReleaseWin|x64 = ReleaseWin|x64
+ ReleaseWin|x86 = ReleaseWin|x86
+ ReleaseWinPY3|x64 = ReleaseWinPY3|x64
+ ReleaseWinPY3|x86 = ReleaseWinPY3|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMono|x64.ActiveCfg = DebugMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMono|x64.Build.0 = DebugMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMono|x86.ActiveCfg = DebugMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMono|x86.Build.0 = DebugMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWin|x64.Build.0 = DebugWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWin|x86.Build.0 = DebugWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWinPY3|x64.Build.0 = DebugWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.DebugWinPY3|x86.Build.0 = DebugWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMono|x64.ActiveCfg = ReleaseMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMono|x64.Build.0 = ReleaseMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMono|x86.ActiveCfg = ReleaseMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMono|x86.Build.0 = ReleaseMono|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|Any CPU
+ {2759F4FF-716B-4828-916F-50FA86613DFC}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|Any CPU
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMono|x64.ActiveCfg = DebugMono|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMono|x64.Build.0 = DebugMono|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMono|x86.ActiveCfg = DebugMono|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMono|x86.Build.0 = DebugMono|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWin|x64.ActiveCfg = DebugWin|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWin|x64.Build.0 = DebugWin|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWin|x86.ActiveCfg = DebugWin|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWin|x86.Build.0 = DebugWin|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
+ {66B8D01A-9906-452A-B09E-BF75EA76468F}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugMono|x64.ActiveCfg = DebugMono|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugMono|x86.ActiveCfg = DebugMono|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWin|x64.ActiveCfg = DebugWin|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWin|x64.Build.0 = DebugWin|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWin|x86.ActiveCfg = DebugWin|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWin|x86.Build.0 = DebugWin|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
+ {E08678D4-9A52-4AD5-B63D-8EBC7399981B}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMono|x64.ActiveCfg = DebugMono|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMono|x64.Build.0 = DebugMono|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMono|x86.ActiveCfg = DebugMono|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMono|x86.Build.0 = DebugMono|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWin|x64.ActiveCfg = DebugWin|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWin|x64.Build.0 = DebugWin|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWin|x86.ActiveCfg = DebugWin|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWin|x86.Build.0 = DebugWin|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
+ {CDAD305F-8E72-492C-A314-64CF58D472A0}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMono|x64.ActiveCfg = DebugMono|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMono|x64.Build.0 = DebugMono|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMono|x86.ActiveCfg = DebugMono|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMono|x86.Build.0 = DebugMono|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWin|x64.ActiveCfg = DebugWin|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWin|x64.Build.0 = DebugWin|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWin|x86.ActiveCfg = DebugWin|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWin|x86.Build.0 = DebugWin|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
+ {F94B547A-E97E-4500-8D53-B4D64D076E5F}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A6347B90-BBE6-4E45-90BF-1BD8B76069E3}
+ EndGlobalSection
+EndGlobal
diff --git a/setup.py b/setup.py
index c23f6b5bd..6cfd773a6 100644
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,8 @@
import sys
import sysconfig
from distutils import spawn
-from distutils.command import build_ext, install_data, install_lib
+from distutils.command import install, build, build_ext, install_data, install_lib
+from wheel import bdist_wheel
from setuptools import Extension, setup
@@ -131,9 +132,28 @@ def _get_long_description():
except ImportError:
return '.Net and Mono integration for Python'
+def _update_xlat_devtools():
+ global DEVTOOLS
+ if DEVTOOLS == "MsDev":
+ DEVTOOLS = "MsDev15"
+ elif DEVTOOLS == "Mono":
+ DEVTOOLS = "dotnet"
class BuildExtPythonnet(build_ext.build_ext):
+ user_options = build_ext.build_ext.user_options + [
+ ('xplat', None, None)
+ ]
+ def initialize_options(self):
+ build_ext.build_ext.initialize_options(self)
+ self.xplat = None
+
+ def finalize_options(self):
+ build_ext.build_ext.finalize_options(self)
+
def build_extension(self, ext):
+ if self.xplat:
+ _update_xlat_devtools()
+
"""Builds the .pyd file using msbuild or xbuild"""
if ext.name != "clr":
return build_ext.build_ext.build_extension(self, ext)
@@ -164,7 +184,7 @@ def build_extension(self, ext):
if CONFIG == "Debug":
defines.extend(["DEBUG", "TRACE"])
- if sys.platform != "win32" and DEVTOOLS == "Mono":
+ if sys.platform != "win32" and (DEVTOOLS == "Mono" or DEVTOOLS == "dotnet"):
on_darwin = sys.platform == "darwin"
defines.append("MONO_OSX" if on_darwin else "MONO_LINUX")
@@ -196,20 +216,33 @@ def build_extension(self, ext):
if DEVTOOLS == "MsDev":
_xbuild = '"{0}"'.format(self._find_msbuild_tool("msbuild.exe"))
_config = "{0}Win".format(CONFIG)
-
+ _solution_file = 'pythonnet.sln'
+ _custom_define_constants = False
+ elif DEVTOOLS == "MsDev15":
+ _xbuild = '"{0}"'.format(self._find_msbuild_tool_15())
+ _config = "{0}Win".format(CONFIG)
+ _solution_file = 'pythonnet.15.sln'
+ _custom_define_constants = True
elif DEVTOOLS == "Mono":
- _xbuild = "xbuild"
+ _xbuild = 'xbuild'
_config = "{0}Mono".format(CONFIG)
+ _solution_file = 'pythonnet.sln'
+ _custom_define_constants = False
+ elif DEVTOOLS == "dotnet":
+ _xbuild = 'dotnet msbuild'
+ _config = "{0}Mono".format(CONFIG)
+ _solution_file = 'pythonnet.15.sln'
+ _custom_define_constants = True
else:
raise NotImplementedError(
- "DevTool {0} not supported (use MsDev/Mono)".format(DEVTOOLS))
+ "DevTool {0} not supported (use MsDev/MsDev15/Mono/dotnet)".format(DEVTOOLS))
cmd = [
_xbuild,
- 'pythonnet.sln',
+ _solution_file,
'/p:Configuration={}'.format(_config),
'/p:Platform={}'.format(ARCH),
- '/p:DefineConstants="{}"'.format('%3B'.join(defines)),
+ '/p:{}DefineConstants="{}"'.format('Custom' if _custom_define_constants else '','%3B'.join(defines)),
'/p:PythonBuildDir="{}"'.format(os.path.abspath(dest_dir)),
'/p:PythonInteropFile="{}"'.format(os.path.basename(interop_file)),
'/verbosity:{}'.format(VERBOSITY),
@@ -220,15 +253,16 @@ def build_extension(self, ext):
cmd.append('/p:PythonManifest="{0}"'.format(manifest))
self.debug_print("Building: {0}".format(" ".join(cmd)))
- use_shell = True if DEVTOOLS == "Mono" else False
+ use_shell = True if DEVTOOLS == "Mono" or DEVTOOLS == "dotnet" else False
+
subprocess.check_call(" ".join(cmd + ["/t:Clean"]), shell=use_shell)
subprocess.check_call(" ".join(cmd + ["/t:Build"]), shell=use_shell)
- if DEVTOOLS == "Mono":
+ if DEVTOOLS == "Mono" or DEVTOOLS == "dotnet":
self._build_monoclr()
def _get_manifest(self, build_dir):
- if DEVTOOLS != "MsDev":
+ if DEVTOOLS != "MsDev" and DEVTOOLS != "MsDev15":
return
mt = self._find_msbuild_tool("mt.exe", use_windows_sdk=True)
manifest = os.path.abspath(os.path.join(build_dir, "app.manifest"))
@@ -261,19 +295,30 @@ def _build_monoclr(self):
def _install_packages(self):
"""install packages using nuget"""
- nuget = os.path.join("tools", "nuget", "nuget.exe")
- use_shell = False
- if DEVTOOLS == "Mono":
- nuget = "mono {0}".format(nuget)
- use_shell = True
+ use_shell = DEVTOOLS == "Mono" or DEVTOOLS == "dotnet"
+
+ if DEVTOOLS == "MsDev15" or DEVTOOLS == "dotnet":
+ if DEVTOOLS == "MsDev15":
+ _config = "{0}Win".format(CONFIG)
+ elif DEVTOOLS == "dotnet":
+ _config = "{0}Mono".format(CONFIG)
+
+ cmd = "dotnet msbuild /t:Restore pythonnet.15.sln /p:Configuration={0} /p:Platform={1}".format(_config, ARCH)
+ self.debug_print("Updating packages with xplat: {0}".format(cmd))
+ subprocess.check_call(cmd, shell=use_shell)
+ else:
+ nuget = os.path.join("tools", "nuget", "nuget.exe")
+
+ if DEVTOOLS == "Mono":
+ nuget = "mono {0}".format(nuget)
- cmd = "{0} update -self".format(nuget)
- self.debug_print("Updating NuGet: {0}".format(cmd))
- subprocess.check_call(cmd, shell=use_shell)
+ cmd = "{0} update -self".format(nuget)
+ self.debug_print("Updating NuGet: {0}".format(cmd))
+ subprocess.check_call(cmd, shell=use_shell)
- cmd = "{0} restore pythonnet.sln -o packages".format(nuget)
- self.debug_print("Installing packages: {0}".format(cmd))
- subprocess.check_call(cmd, shell=use_shell)
+ cmd = "{0} restore pythonnet.sln -o packages".format(nuget)
+ self.debug_print("Installing packages: {0}".format(cmd))
+ subprocess.check_call(cmd, shell=use_shell)
def _find_msbuild_tool(self, tool="msbuild.exe", use_windows_sdk=False):
"""Return full path to one of the Microsoft build tools"""
@@ -319,6 +364,20 @@ def _find_msbuild_tool(self, tool="msbuild.exe", use_windows_sdk=False):
raise RuntimeError("{0} could not be found".format(tool))
+ def _find_msbuild_tool_15(self):
+ """Return full path to one of the Microsoft build tools"""
+ try:
+ basePathes = subprocess.check_output(
+ ["vswhere", "-latest",
+ "-version", "[15.0, 16.0)",
+ "-requires", "Microsoft.Component.MSBuild",
+ "-property", "InstallationPath"]).splitlines()
+ if len(basePathes):
+ return os.path.join(basePathes[0].decode(sys.stdout.encoding or "utf-8"), "MSBuild", "15.0", "Bin", "MSBuild.exe")
+ else:
+ raise RuntimeError("MSBuild >=15.0 could not be found.")
+ except subprocess.CalledProcessError as e:
+ raise RuntimeError("MSBuild >=15.0 could not be found. {0}".format(e.output))
class InstallLibPythonnet(install_lib.install_lib):
def install(self):
@@ -356,8 +415,39 @@ def run(self):
return install_data.install_data.run(self)
+class InstallPythonnet(install.install):
+ user_options = install.install.user_options + [
+ ('xplat', None, None)
+ ]
+ def initialize_options(self):
+ install.install.initialize_options(self)
+ self.xplat = None
+
+ def finalize_options(self):
+ install.install.finalize_options(self)
-###############################################################################
+ def run(self):
+ if self.xplat:
+ _update_xlat_devtools()
+ return install.install.run(self)
+
+class BDistWheelPythonnet(bdist_wheel.bdist_wheel):
+ user_options = bdist_wheel.bdist_wheel.user_options + [
+ ('xplat', None, None)
+ ]
+ def initialize_options(self):
+ bdist_wheel.bdist_wheel.initialize_options(self)
+ self.xplat = None
+
+ def finalize_options(self):
+ bdist_wheel.bdist_wheel.finalize_options(self)
+
+ def run(self):
+ if self.xplat:
+ _update_xlat_devtools()
+ return bdist_wheel.bdist_wheel.run(self)
+
+ ###############################################################################
setupdir = os.path.dirname(__file__)
if setupdir:
os.chdir(setupdir)
@@ -385,9 +475,11 @@ def run(self):
]),
],
cmdclass={
+ "install": InstallPythonnet,
"build_ext": BuildExtPythonnet,
"install_lib": InstallLibPythonnet,
"install_data": InstallDataPythonnet,
+ "bdist_wheel": BDistWheelPythonnet
},
classifiers=[
'Development Status :: 5 - Production/Stable',
diff --git a/src/clrmodule/clrmodule.15.csproj b/src/clrmodule/clrmodule.15.csproj
new file mode 100644
index 000000000..4d8a1b8ff
--- /dev/null
+++ b/src/clrmodule/clrmodule.15.csproj
@@ -0,0 +1,101 @@
+
+
+
+
+
+ net40
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ clrmodule
+ clrmodule
+ clrmodule
+ 2.4.0
+ false
+ false
+ false
+ false
+ false
+ false
+ bin\clrmodule.xml
+ bin\
+ false
+ 1591
+ ..\..\
+ $(SolutionDir)\bin\
+ 6
+ prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+
+
+
+ x86
+
+
+ x64
+
+
+
+ true
+ $(DefineConstants);PYTHON2;TRACE;DEBUG
+ full
+
+
+ $(DefineConstants);PYTHON2
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);PYTHON2;TRACE;DEBUG
+ full
+
+
+ $(DefineConstants);PYTHON2
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);PYTHON3;TRACE;DEBUG
+ full
+
+
+ $(DefineConstants);PYTHON3
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);PYTHON3;TRACE;DEBUG
+ full
+
+
+ $(DefineConstants);PYTHON3
+ true
+ pdbonly
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetPath)
+ $(TargetDir)$(TargetName).pdb
+
+
+
+
+
+
+
+
diff --git a/src/console/Console.15.csproj b/src/console/Console.15.csproj
new file mode 100644
index 000000000..0c89fce40
--- /dev/null
+++ b/src/console/Console.15.csproj
@@ -0,0 +1,105 @@
+
+
+
+ net40
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ Exe
+ nPython
+ Python.Runtime
+ nPython
+ 2.4.0
+ false
+ false
+ false
+ false
+ false
+ false
+ bin\nPython.xml
+ bin\
+ false
+ 1591
+ ..\..\
+ $(SolutionDir)\bin\
+ 6
+ python-clear.ico
+ prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
+
+
+ x86
+
+
+ x64
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ $(PythonManifest)
+
+
+
+
+
+
+ Properties\SharedAssemblyInfo.cs
+
+
+
+
+
+ Python.Runtime.dll
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/embed_tests/Python.EmbeddingTest.15.csproj b/src/embed_tests/Python.EmbeddingTest.15.csproj
new file mode 100644
index 000000000..ac6ecba92
--- /dev/null
+++ b/src/embed_tests/Python.EmbeddingTest.15.csproj
@@ -0,0 +1,121 @@
+
+
+
+
+ net40
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ net45
+ Python.EmbeddingTest
+ Python.EmbeddingTest
+ Python.EmbeddingTest
+ 2.4.0
+ false
+ false
+ false
+ false
+ bin\
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ 1591
+ ..\..\
+ $(SolutionDir)\bin\
+ 6
+ prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
+
+
+ x86
+
+
+ x64
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants);
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants);
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants);
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants);
+ true
+ pdbonly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetPath)
+ $(TargetDir)$(TargetName).pdb
+
+
+
+
+
+
+
+
diff --git a/src/embed_tests/Python.EmbeddingTest.csproj b/src/embed_tests/Python.EmbeddingTest.csproj
index d45c622f9..fe02b0526 100644
--- a/src/embed_tests/Python.EmbeddingTest.csproj
+++ b/src/embed_tests/Python.EmbeddingTest.csproj
@@ -70,8 +70,8 @@
-
- ..\..\packages\NUnit.3.6.0\lib\net40\nunit.framework.dll
+
+ ..\..\packages\NUnit.3.7.1\lib\net40\nunit.framework.dll
diff --git a/src/embed_tests/TestPythonEngineProperties.cs b/src/embed_tests/TestPythonEngineProperties.cs
index 76177d05a..01c6ae7e3 100644
--- a/src/embed_tests/TestPythonEngineProperties.cs
+++ b/src/embed_tests/TestPythonEngineProperties.cs
@@ -146,7 +146,7 @@ public void SetProgramName()
[Test]
public void SetPythonPath()
{
- if (Runtime.Runtime._pyversion == "2.7")
+ if (Runtime.Runtime.pyversion == "2.7")
{
// Assert.Skip outputs as a warning (ie. pending to fix)
Assert.Pass();
@@ -166,7 +166,7 @@ public void SetPythonPath()
[Test]
public void SetPythonPathExceptionOn27()
{
- if (Runtime.Runtime._pyversion != "2.7")
+ if (Runtime.Runtime.pyversion != "2.7")
{
Assert.Pass();
}
diff --git a/src/embed_tests/packages.config b/src/embed_tests/packages.config
index 4cb01d3be..8c175f441 100644
--- a/src/embed_tests/packages.config
+++ b/src/embed_tests/packages.config
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/src/runtime/Python.Runtime.15.csproj b/src/runtime/Python.Runtime.15.csproj
new file mode 100644
index 000000000..93bd143dc
--- /dev/null
+++ b/src/runtime/Python.Runtime.15.csproj
@@ -0,0 +1,133 @@
+
+
+
+ net40
+ AnyCPU
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ net45
+ Python.Runtime
+ Python.Runtime
+ Python.Runtime
+ 2.4.0
+ false
+ false
+ false
+ false
+ false
+ false
+ bin\
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ 1591;NU1701
+ ..\..\
+ $(SolutionDir)\bin\
+ 6
+ True
+ ..\pythonnet.snk
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
+ $(PYTHONNET_PY2_VERSION)
+ PYTHON27
+ $(PYTHONNET_PY3_VERSION)
+ PYTHON36
+ $(PYTHONNET_WIN_DEFINE_CONSTANTS)
+ UCS2
+ $(PYTHONNET_MONO_DEFINE_CONSTANTS)
+ UCS4;MONO_LINUX;PYTHON_WITH_PYMALLOC
+
+
+
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants)
+ true
+ pdbonly
+
+
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants);TRACE;DEBUG
+ false
+ full
+
+
+ true
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants);TRACE;DEBUG
+ false
+ full
+
+
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants)
+ true
+ pdbonly
+
+
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants);TRACE;DEBUG
+ false
+ full
+
+
+ true
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants);TRACE;DEBUG
+ false
+ full
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ clr.py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetPath)
+ $(TargetDir)$(TargetName).pdb
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/runtime/runtime.cs b/src/runtime/runtime.cs
index 8f730a855..3949500e2 100644
--- a/src/runtime/runtime.cs
+++ b/src/runtime/runtime.cs
@@ -110,8 +110,8 @@ public class Runtime
// We needs to replace all public constants to static readonly fields to allow
// binary substitution of different Python.Runtime.dll builds in a target application.
- public string pyversion => _pyversion;
- public string pyver => _pyver;
+ public static string pyversion => _pyversion;
+ public static string pyver => _pyver;
#if PYTHON27
internal const string _pyversion = "2.7";
diff --git a/src/testing/Python.Test.15.csproj b/src/testing/Python.Test.15.csproj
new file mode 100644
index 000000000..635580854
--- /dev/null
+++ b/src/testing/Python.Test.15.csproj
@@ -0,0 +1,92 @@
+
+
+
+ net40
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ Python.Test
+ Python.Test
+ Python.Test
+ 2.4.0
+ bin\Python.Test.xml
+ bin\
+ false
+ 1591,0067
+ ..\..\
+ $(SolutionDir)\bin\
+ 6
+ false
+ ..\pythonnet.snk
+ prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
+
+
+ x86
+
+
+ x64
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+ true
+ $(DefineConstants);DEBUG;TRACE
+ full
+
+
+ $(DefineConstants)
+ true
+ pdbonly
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetPath)
+ $(TargetDir)$(TargetName).pdb
+
+
+
+
+
+
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy