diff --git a/.travis.yml b/.travis.yml
index 1dadbad1d..cf6583312 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,6 +18,7 @@ matrix:
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
packages:
- mono-devel
+ - msbuild
- ca-certificates-mono
- dotnet-hostfxr-2.0.0
- dotnet-runtime-2.0.0
@@ -44,6 +45,7 @@ matrix:
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
packages:
- mono-devel
+ - msbuild
- ca-certificates-mono
- dotnet-hostfxr-2.0.0
- dotnet-runtime-2.0.0
diff --git a/NuGet.config b/NuGet.config
index 5210cd6c9..75cf98132 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -1,7 +1,6 @@
-
-
+
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
deleted file mode 100644
index 7e859481d..000000000
--- a/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# pythonnet - Python for .NET
-
-[](https://gitter.im/pythonnet/pythonnet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-[![appveyor shield][]](https://ci.appveyor.com/project/pythonnet/pythonnet/branch/master)
-[![travis shield][]](https://travis-ci.org/pythonnet/pythonnet)
-[![codecov shield][]](https://codecov.io/github/pythonnet/pythonnet)
-[![coverity shield][]](https://scan.coverity.com/projects/pythonnet)
-
-[![license shield][]](./LICENSE)
-[![pypi package version][]](https://pypi.python.org/pypi/pythonnet)
-[![python supported shield][]](https://pypi.python.org/pypi/pythonnet)
-[![stackexchange shield][]](http://stackoverflow.com/questions/tagged/python.net)
-[![slack][]](https://pythonnet.slack.com)
-
-Python for .NET is a package that gives Python programmers nearly
-seamless integration with the .NET Common Language Runtime (CLR) and
-provides a powerful application scripting tool for .NET developers.
-It allows Python code to interact with the CLR, and may also be used to
-embed Python into a .NET application.
-
-## Calling .NET code from Python
-
-Python for .NET allows CLR namespaces to be treated essentially
-as Python packages.
-
-```python
-import clr
-from System import String
-from System.Collections import *
-```
-
-To load an assembly, use the `AddReference` function in the `clr` module:
-
-```python
-import clr
-clr.AddReference("System.Windows.Forms")
-from System.Windows.Forms import Form
-```
-
-## Embedding Python in .NET
-
-- All calls to python should be inside
- a `using (Py.GIL()) {/* Your code here */}` block.
-- Import python modules using `dynamic mod = Py.Import("mod")`,
- then you can call functions as normal, eg `mod.func(args)`.
-- Use `mod.func(args, Py.kw("keywordargname", keywordargvalue))` or `mod.func(args, keywordargname: keywordargvalue)`
- to apply keyword arguments.
-- All python objects should be declared as `dynamic` type.
-- Mathematical operations involving python and literal/managed types must
- have the python object first, eg. `np.pi * 2` works, `2 * np.pi` doesn't.
-
-### Example
-
-```csharp
-static void Main(string[] args)
-{
- using (Py.GIL())
- {
- dynamic np = Py.Import("numpy");
- Console.WriteLine(np.cos(np.pi * 2));
-
- dynamic sin = np.sin;
- Console.WriteLine(sin(5));
-
- double c = np.cos(5) + sin(5);
- Console.WriteLine(c);
-
- dynamic a = np.array(new List { 1, 2, 3 });
- Console.WriteLine(a.dtype);
-
- dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32);
- Console.WriteLine(b.dtype);
-
- Console.WriteLine(a * b);
- Console.ReadKey();
- }
-}
-```
-
-Output:
-
-```c
-1.0
--0.958924274663
--0.6752620892
-float64
-int32
-[ 6. 10. 12.]
-```
-
-Information on installation, FAQ, troubleshooting, debugging, and projects using pythonnet can be found in the Wiki:
-
-https://github.com/pythonnet/pythonnet/wiki
-
-[appveyor shield]: https://img.shields.io/appveyor/ci/pythonnet/pythonnet/master.svg?label=AppVeyor
-
-[codecov shield]: https://img.shields.io/codecov/c/github/pythonnet/pythonnet/master.svg?label=Codecov
-
-[coverity shield]: https://img.shields.io/coverity/scan/7830.svg
-
-[license shield]: https://img.shields.io/badge/license-MIT-blue.svg?maxAge=3600
-
-[pypi package version]: https://img.shields.io/pypi/v/pythonnet.svg
-
-[python supported shield]: https://img.shields.io/pypi/pyversions/pythonnet.svg
-
-[slack]: https://img.shields.io/badge/chat-slack-color.svg?style=social
-
-[stackexchange shield]: https://img.shields.io/badge/StackOverflow-python.net-blue.svg
-
-[travis shield]: https://img.shields.io/travis/pythonnet/pythonnet/master.svg?label=Travis
diff --git a/README.rst b/README.rst
new file mode 100644
index 000000000..7cffbe19b
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,113 @@
+pythonnet - Python for .NET
+===========================
+
+|Join the chat at https://gitter.im/pythonnet/pythonnet|
+
+|appveyor shield| |travis shield| |codecov shield|
+
+|license shield| |pypi package version| |python supported shield|
+|stackexchange shield|
+
+Python for .NET is a package that gives Python programmers nearly
+seamless integration with the .NET Common Language Runtime (CLR) and
+provides a powerful application scripting tool for .NET developers. It
+allows Python code to interact with the CLR, and may also be used to
+embed Python into a .NET application.
+
+Calling .NET code from Python
+-----------------------------
+
+Python for .NET allows CLR namespaces to be treated essentially as
+Python packages.
+
+.. code-block::
+
+ import clr
+ from System import String
+ from System.Collections import *
+
+To load an assembly, use the ``AddReference`` function in the ``clr``
+module:
+
+.. code-block::
+
+ import clr
+ clr.AddReference("System.Windows.Forms")
+ from System.Windows.Forms import Form
+
+Embedding Python in .NET
+------------------------
+
+- All calls to python should be inside a
+ ``using (Py.GIL()) {/* Your code here */}`` block.
+- Import python modules using ``dynamic mod = Py.Import("mod")``, then
+ you can call functions as normal, eg ``mod.func(args)``.
+- Use ``mod.func(args, Py.kw("keywordargname", keywordargvalue))`` or
+ ``mod.func(args, keywordargname: keywordargvalue)`` to apply keyword
+ arguments.
+- All python objects should be declared as ``dynamic`` type.
+- Mathematical operations involving python and literal/managed types
+ must have the python object first, eg. ``np.pi * 2`` works,
+ ``2 * np.pi`` doesn’t.
+
+Example
+~~~~~~~
+
+.. code-block:: csharp
+
+ static void Main(string[] args)
+ {
+ using (Py.GIL())
+ {
+ dynamic np = Py.Import("numpy");
+ Console.WriteLine(np.cos(np.pi * 2));
+
+ dynamic sin = np.sin;
+ Console.WriteLine(sin(5));
+
+ double c = np.cos(5) + sin(5);
+ Console.WriteLine(c);
+
+ dynamic a = np.array(new List { 1, 2, 3 });
+ Console.WriteLine(a.dtype);
+
+ dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32);
+ Console.WriteLine(b.dtype);
+
+ Console.WriteLine(a * b);
+ Console.ReadKey();
+ }
+ }
+
+Output:
+
+.. code::
+
+ 1.0
+ -0.958924274663
+ -0.6752620892
+ float64
+ int32
+ [ 6. 10. 12.]
+
+Information on installation, FAQ, troubleshooting, debugging, and
+projects using pythonnet can be found in the Wiki:
+
+https://github.com/pythonnet/pythonnet/wiki
+
+.. |Join the chat at https://gitter.im/pythonnet/pythonnet| image:: https://badges.gitter.im/pythonnet/pythonnet.svg
+ :target: https://gitter.im/pythonnet/pythonnet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
+.. |appveyor shield| image:: https://img.shields.io/appveyor/ci/pythonnet/pythonnet/master.svg?label=AppVeyor
+ :target: https://ci.appveyor.com/project/pythonnet/pythonnet/branch/master
+.. |travis shield| image:: https://img.shields.io/travis/pythonnet/pythonnet/master.svg?label=Travis
+ :target: https://travis-ci.org/pythonnet/pythonnet
+.. |codecov shield| image:: https://img.shields.io/codecov/c/github/pythonnet/pythonnet/master.svg?label=Codecov
+ :target: https://codecov.io/github/pythonnet/pythonnet
+.. |license shield| image:: https://img.shields.io/badge/license-MIT-blue.svg?maxAge=3600
+ :target: ./LICENSE
+.. |pypi package version| image:: https://img.shields.io/pypi/v/pythonnet.svg
+ :target: https://pypi.python.org/pypi/pythonnet
+.. |python supported shield| image:: https://img.shields.io/pypi/pyversions/pythonnet.svg
+ :target: https://pypi.python.org/pypi/pythonnet
+.. |stackexchange shield| image:: https://img.shields.io/badge/StackOverflow-python.net-blue.svg
+ :target: http://stackoverflow.com/questions/tagged/python.net
diff --git a/pythonnet.15.sln b/pythonnet.15.sln
deleted file mode 100644
index f2015e480..000000000
--- a/pythonnet.15.sln
+++ /dev/null
@@ -1,194 +0,0 @@
-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/pythonnet.sln b/pythonnet.sln
index c5afd66c3..6ab3a4cc2 100644
--- a/pythonnet.sln
+++ b/pythonnet.sln
@@ -1,16 +1,16 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.26730.3
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Runtime", "src\runtime\Python.Runtime.csproj", "{097B4AC0-74E9-4C58-BCF8-C69746EC8271}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.Runtime", "src\runtime\Python.Runtime.csproj", "{2759F4FF-716B-4828-916F-50FA86613DFC}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Test", "src\testing\Python.Test.csproj", "{6F401A34-273B-450F-9A4C-13550BE0767B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.EmbeddingTest", "src\embed_tests\Python.EmbeddingTest.csproj", "{66B8D01A-9906-452A-B09E-BF75EA76468F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.EmbeddingTest", "src\embed_tests\Python.EmbeddingTest.csproj", "{4165C59D-2822-499F-A6DB-EACA4C331EB5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClrModule", "src\clrmodule\ClrModule.csproj", "{E08678D4-9A52-4AD5-B63D-8EBC7399981B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Console", "src\console\Console.csproj", "{E29DCF0A-5114-4A98-B1DD-71264B6EA349}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Console", "src\console\Console.csproj", "{CDAD305F-8E72-492C-A314-64CF58D472A0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "clrmodule", "src\clrmodule\clrmodule.csproj", "{86E834DE-1139-4511-96CC-69636A56E7AC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Python.Test", "src\testing\Python.Test.csproj", "{F94B547A-E97E-4500-8D53-B4D64D076E5F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -32,171 +32,163 @@ Global
ReleaseWinPY3|x86 = ReleaseWinPY3|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMono|x64.ActiveCfg = DebugMono|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMono|x64.Build.0 = DebugMono|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMono|x86.ActiveCfg = DebugMono|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMono|x86.Build.0 = DebugMono|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWin|x64.ActiveCfg = DebugWin|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWin|x64.Build.0 = DebugWin|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWin|x86.ActiveCfg = DebugWin|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWin|x86.Build.0 = DebugWin|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMono|x64.ActiveCfg = DebugMono|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMono|x64.Build.0 = DebugMono|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMono|x86.ActiveCfg = DebugMono|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMono|x86.Build.0 = DebugMono|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWin|x64.ActiveCfg = DebugWin|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWin|x64.Build.0 = DebugWin|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWin|x86.ActiveCfg = DebugWin|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWin|x86.Build.0 = DebugWin|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
- {6F401A34-273B-450F-9A4C-13550BE0767B}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMono|x64.ActiveCfg = DebugMono|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMono|x64.Build.0 = DebugMono|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMono|x86.ActiveCfg = DebugMono|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMono|x86.Build.0 = DebugMono|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWin|x64.ActiveCfg = DebugWin|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWin|x64.Build.0 = DebugWin|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWin|x86.ActiveCfg = DebugWin|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWin|x86.Build.0 = DebugWin|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMono|x64.ActiveCfg = DebugMono|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMono|x64.Build.0 = DebugMono|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMono|x86.ActiveCfg = DebugMono|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMono|x86.Build.0 = DebugMono|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMonoPY3|x64.Build.0 = DebugMonoPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugMonoPY3|x86.Build.0 = DebugMonoPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWin|x64.ActiveCfg = DebugWin|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWin|x64.Build.0 = DebugWin|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWin|x86.ActiveCfg = DebugWin|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWin|x86.Build.0 = DebugWin|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMono|x64.Build.0 = ReleaseMono|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMono|x86.Build.0 = ReleaseMono|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMonoPY3|x64.Build.0 = ReleaseMonoPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseMonoPY3|x86.Build.0 = ReleaseMonoPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugMono|x64.ActiveCfg = DebugMono|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugMono|x86.ActiveCfg = DebugMono|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugMonoPY3|x64.ActiveCfg = DebugMonoPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugMonoPY3|x86.ActiveCfg = DebugMonoPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWin|x64.ActiveCfg = DebugWin|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWin|x64.Build.0 = DebugWin|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWin|x86.ActiveCfg = DebugWin|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWin|x86.Build.0 = DebugWin|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWinPY3|x64.ActiveCfg = DebugWinPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWinPY3|x64.Build.0 = DebugWinPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWinPY3|x86.ActiveCfg = DebugWinPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.DebugWinPY3|x86.Build.0 = DebugWinPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseMono|x64.ActiveCfg = ReleaseMono|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseMono|x86.ActiveCfg = ReleaseMono|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseMonoPY3|x64.ActiveCfg = ReleaseMonoPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseMonoPY3|x86.ActiveCfg = ReleaseMonoPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWinPY3|x64.ActiveCfg = ReleaseWinPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWinPY3|x64.Build.0 = ReleaseWinPY3|x64
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWinPY3|x86.ActiveCfg = ReleaseWinPY3|x86
- {86E834DE-1139-4511-96CC-69636A56E7AC}.ReleaseWinPY3|x86.Build.0 = ReleaseWinPY3|x86
+ {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(MonoDevelopProperties) = preSolution
- StartupItem = src\console\Console.csproj
- Policies = $0
- $0.VersionControlPolicy = $1
- $1.inheritsSet = Mono
- $0.ChangeLogPolicy = $2
- $2.UpdateMode = None
- $2.MessageStyle = $3
- $3.LineAlign = 0
- $2.inheritsSet = Mono
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A6347B90-BBE6-4E45-90BF-1BD8B76069E3}
EndGlobalSection
EndGlobal
diff --git a/requirements.txt b/requirements.txt
index 29c2e4566..85cf3f441 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
# Requirements for both Travis and AppVeyor
-pytest==3.2.5
+pytest
coverage
psutil
@@ -9,4 +9,5 @@ codecov
# Platform specific requirements
# pip; sys_platform == 'win32'
wheel; sys_platform == 'win32'
+vswhere; sys_platform == 'win32'
pycparser; sys_platform != 'win32'
diff --git a/setup.py b/setup.py
index 1b6f07ea6..b9066dfed 100644
--- a/setup.py
+++ b/setup.py
@@ -6,7 +6,6 @@
an egg or wheel.
"""
-import collections
import fnmatch
import glob
import os
@@ -14,7 +13,7 @@
import sys
import sysconfig
from distutils import spawn
-from distutils.command import install, build, build_ext, install_data, install_lib
+from distutils.command import install, build_ext, install_data, install_lib
from wheel import bdist_wheel
from setuptools import Extension, setup
@@ -24,73 +23,12 @@
CONFIG = "Release" # Release or Debug
VERBOSITY = "normal" # quiet, minimal, normal, detailed, diagnostic
-is_64bits = sys.maxsize > 2**32
+is_64bits = sys.maxsize > 2 ** 32
DEVTOOLS = "MsDev" if sys.platform == "win32" else "Mono"
ARCH = "x64" if is_64bits else "x86"
PY_MAJOR = sys.version_info[0]
PY_MINOR = sys.version_info[1]
-###############################################################################
-# Windows Keys Constants for MSBUILD tools
-RegKey = collections.namedtuple('RegKey', 'sdk_name key value_name suffix')
-vs_python = "Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\WinSDK"
-vs_root = "SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\{0}"
-sdks_root = "SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v{0}Win32Tools"
-kits_root = "SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots"
-kits_suffix = os.path.join("bin", ARCH)
-
-WIN_SDK_KEYS = (
- RegKey(sdk_name="Windows Kit 10.0", key=kits_root,
- value_name="KitsRoot10", suffix=os.path.join("bin", "10.0.16299.0", ARCH)),
-
- RegKey(sdk_name="Windows Kit 10.0", key=kits_root,
- value_name="KitsRoot10", suffix=os.path.join("bin", "10.0.15063.0", ARCH)),
-
- RegKey(sdk_name="Windows Kit 10.0", key=kits_root,
- value_name="KitsRoot10", suffix=kits_suffix),
-
- RegKey(sdk_name="Windows Kit 8.1", key=kits_root,
- value_name="KitsRoot81", suffix=kits_suffix),
-
- RegKey(sdk_name="Windows Kit 8.0", key=kits_root,
- value_name="KitsRoot", suffix=kits_suffix),
-
- RegKey(sdk_name="Windows SDK 7.1A", key=sdks_root.format("7.1A\\WinSDK-"),
- value_name="InstallationFolder", suffix=""),
-
- RegKey(sdk_name="Windows SDK 7.1", key=sdks_root.format("7.1\\WinSDK"),
- value_name="InstallationFolder", suffix=""),
-
- RegKey(sdk_name="Windows SDK 7.0A", key=sdks_root.format("7.0A\\WinSDK-"),
- value_name="InstallationFolder", suffix=""),
-
- RegKey(sdk_name="Windows SDK 7.0", key=sdks_root.format("7.0\\WinSDK"),
- value_name="InstallationFolder", suffix=""),
-
- RegKey(sdk_name="Windows SDK 6.0A", key=sdks_root.format("6.0A\\WinSDK"),
- value_name="InstallationFolder", suffix=""),
-)
-
-VS_KEYS = (
- RegKey(sdk_name="MSBuild 15", key=vs_root.format("15.0"),
- value_name="MSBuildToolsPath", suffix=""),
-
- RegKey(sdk_name="MSBuild 14", key=vs_root.format("14.0"),
- value_name="MSBuildToolsPath", suffix=""),
-
- RegKey(sdk_name="MSBuild 12", key=vs_root.format("12.0"),
- value_name="MSBuildToolsPath", suffix=""),
-
- RegKey(sdk_name="MSBuild 4", key=vs_root.format("4.0"),
- value_name="MSBuildToolsPath", suffix=""),
-
- RegKey(sdk_name="MSBuild 3.5", key=vs_root.format("3.5"),
- value_name="MSBuildToolsPath", suffix=""),
-
- RegKey(sdk_name="MSBuild 2.0", key=vs_root.format("2.0"),
- value_name="MSBuildToolsPath", suffix=""),
-)
-
###############################################################################
def _check_output(*args, **kwargs):
@@ -108,19 +46,19 @@ def _get_interop_filename():
required to generate the file.
"""
interop_filename = "interop{0}{1}{2}.cs".format(
- PY_MAJOR, PY_MINOR, getattr(sys, "abiflags", ""))
+ PY_MAJOR, PY_MINOR, getattr(sys, "abiflags", "")
+ )
return os.path.join("src", "runtime", interop_filename)
def _get_source_files():
"""Walk project and collect the files needed for ext_module"""
- for ext in (".sln", ):
+ for ext in (".sln",):
for path in glob.glob("*" + ext):
yield path
for root, dirnames, filenames in os.walk("src"):
- for ext in (".cs", ".csproj", ".snk", ".config",
- ".py", ".c", ".h", ".ico"):
+ for ext in (".cs", ".csproj", ".snk", ".config", ".py", ".c", ".h", ".ico"):
for filename in fnmatch.filter(filenames, "*" + ext):
yield os.path.join(root, filename)
@@ -132,23 +70,18 @@ def _get_source_files():
def _get_long_description():
"""Helper to populate long_description for pypi releases"""
- try:
- import pypandoc
- return pypandoc.convert('README.md', 'rst')
- except ImportError:
- return '.Net and Mono integration for Python'
+ return open("README.rst").read()
+
def _update_xlat_devtools():
global DEVTOOLS
- if DEVTOOLS == "MsDev":
- DEVTOOLS = "MsDev15"
- elif DEVTOOLS == "Mono":
+ if DEVTOOLS == "Mono":
DEVTOOLS = "dotnet"
+
class BuildExtPythonnet(build_ext.build_ext):
- user_options = build_ext.build_ext.user_options + [
- ('xplat', None, None)
- ]
+ 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
@@ -158,15 +91,12 @@ def finalize_options(self):
def build_extension(self, ext):
if self.xplat:
- _update_xlat_devtools()
+ _update_xlat_devtools()
"""Builds the .pyd file using msbuild or xbuild"""
if ext.name != "clr":
return build_ext.build_ext.build_extension(self, ext)
- # install packages using nuget
- self._install_packages()
-
dest_file = self.get_ext_fullpath(ext.name)
dest_dir = os.path.dirname(dest_file)
if not os.path.exists(dest_dir):
@@ -179,6 +109,7 @@ def build_extension(self, ext):
unicode_width = 2 if sys.maxunicode < 0x10FFFF else 4
else:
import ctypes
+
unicode_width = ctypes.sizeof(ctypes.c_wchar)
defines = [
@@ -190,9 +121,12 @@ def build_extension(self, ext):
if CONFIG == "Debug":
defines.extend(["DEBUG", "TRACE"])
- if sys.platform != "win32" and (DEVTOOLS == "Mono" or DEVTOOLS == "dotnet"):
+ if sys.platform != "win32":
on_darwin = sys.platform == "darwin"
- defines.append("MONO_OSX" if on_darwin else "MONO_LINUX")
+ if on_darwin:
+ defines.append("MONO_OSX")
+ else:
+ defines.append("MONO_LINUX")
# Check if --enable-shared was set when Python was built
enable_shared = sysconfig.get_config_var("Py_ENABLE_SHARED")
@@ -200,7 +134,7 @@ def build_extension(self, ext):
# Double-check if libpython is linked dynamically with python
ldd_cmd = ["otool", "-L"] if on_darwin else ["ldd"]
lddout = _check_output(ldd_cmd + [sys.executable])
- if 'libpython' not in lddout:
+ if "libpython" not in lddout:
enable_shared = False
if not enable_shared:
@@ -215,74 +149,65 @@ def build_extension(self, ext):
# check the interop file exists, and create it if it doesn't
interop_file = _get_interop_filename()
if not os.path.exists(interop_file):
- self.debug_print("Creating {0}".format(interop_file))
- geninterop = os.path.join("tools", "geninterop", "geninterop.py")
- subprocess.check_call([sys.executable, geninterop, interop_file])
+ self.announce(
+ "Failed to locate interop file at {}, please run "
+ "'python tools/geninterop/geninterop.py'"
+ )
+ raise NotImplementedError
+
+ _solution_file = "pythonnet.sln"
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())
+ _xbuild = '"{0}"'.format(self._find_msbuild_tool())
_config = "{0}Win".format(CONFIG)
- _solution_file = 'pythonnet.15.sln'
- _custom_define_constants = True
elif DEVTOOLS == "Mono":
- _xbuild = 'xbuild'
+ _xbuild = "msbuild"
_config = "{0}Mono".format(CONFIG)
- _solution_file = 'pythonnet.sln'
- _custom_define_constants = False
elif DEVTOOLS == "dotnet":
- _xbuild = 'dotnet msbuild'
+ _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/MsDev15/Mono/dotnet)".format(DEVTOOLS))
+ "DevTool {0} not supported (use MsDev/Mono/dotnet)".format(
+ DEVTOOLS
+ )
+ )
cmd = [
_xbuild,
_solution_file,
- '/p:Configuration={}'.format(_config),
- '/p:Platform={}'.format(ARCH),
- '/p:{}DefineConstants="{}"'.format('Custom' if _custom_define_constants else '','%3B'.join(defines)),
+ "/p:Configuration={}".format(_config),
+ "/p:Platform={}".format(ARCH),
+ '/p:CustomDefineConstants="{}"'.format("%3B".join(defines)),
'/p:PythonBuildDir="{}"'.format(os.path.abspath(dest_dir)),
'/p:PythonInteropFile="{}"'.format(os.path.basename(interop_file)),
- '/verbosity:{}'.format(VERBOSITY),
+ "/verbosity:{}".format(VERBOSITY),
]
- manifest = self._get_manifest(dest_dir)
- if manifest:
- cmd.append('/p:PythonManifest="{0}"'.format(manifest))
-
self.debug_print("Building: {0}".format(" ".join(cmd)))
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 == "MsDev15" or DEVTOOLS == "dotnet":
- subprocess.check_call(" ".join(cmd + ['"/t:Console_15:publish;Python_EmbeddingTest_15:publish"', "/p:TargetFramework=netcoreapp2.0"]), shell=use_shell)
+ if DEVTOOLS == "MsDev" or DEVTOOLS == "dotnet":
+ subprocess.check_call(
+ " ".join(
+ cmd
+ + [
+ '"/t:Console:publish;Python_EmbeddingTest:publish"',
+ "/p:TargetFramework=netcoreapp2.0",
+ ]
+ ),
+ shell=use_shell,
+ )
+
if DEVTOOLS == "Mono" or DEVTOOLS == "dotnet":
self._build_monoclr()
- def _get_manifest(self, build_dir):
- 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"))
- cmd = [mt, '-inputresource:"{0}"'.format(sys.executable),
- '-out:"{0}"'.format(manifest)]
- self.debug_print("Extracting manifest from {}".format(sys.executable))
- subprocess.check_call(" ".join(cmd), shell=False)
- return manifest
-
def _build_monoclr(self):
try:
mono_libs = _check_output("pkg-config --libs mono-2", shell=True)
- except:
+ except Exception:
if DEVTOOLS == "dotnet":
print("Skipping building monoclr module...")
return
@@ -296,128 +221,56 @@ def _build_monoclr(self):
# build the clr python module
clr_ext = Extension(
"clr",
- sources=[
- "src/monoclr/pynetinit.c",
- "src/monoclr/clrmod.c"
- ],
+ sources=["src/monoclr/pynetinit.c", "src/monoclr/clrmod.c"],
extra_compile_args=cflags.split(" "),
- extra_link_args=libs.split(" ")
+ extra_link_args=libs.split(" "),
)
build_ext.build_ext.build_extension(self, clr_ext)
- def _install_packages(self):
- """install packages using nuget"""
- 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)
-
- try:
- # msbuild=14 is mainly for Mono issues
- cmd = "{0} restore pythonnet.sln -MSBuildVersion 14 -o packages".format(nuget)
- self.debug_print("Installing packages: {0}".format(cmd))
- subprocess.check_call(cmd, shell=use_shell)
- except:
- # when only VS 2017 is installed do not specify msbuild version
- 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):
+ def _find_msbuild_tool(self):
"""Return full path to one of the Microsoft build tools"""
+ tool = "msbuild"
+
# trying to search path with help of vswhere when MSBuild 15.0 and higher installed.
- if tool=="msbuild.exe" and use_windows_sdk==False:
- try:
- basePathes = subprocess.check_output(
- ["tools\\vswhere\\vswhere.exe", "-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")
- except:
- pass # keep trying to search by old method.
+ if sys.platform == "win32":
+ path = self._find_msbuild_tool_15()
+ if path:
+ return path
# Search in PATH first
path = spawn.find_executable(tool)
if path:
return path
- # Search within registry to find build tools
- try: # PY2
- import _winreg as winreg
- except ImportError: # PY3
- import winreg
-
- keys_to_check = WIN_SDK_KEYS if use_windows_sdk else VS_KEYS
- hklm = winreg.HKEY_LOCAL_MACHINE
- for rkey in keys_to_check:
- try:
- with winreg.OpenKey(hklm, rkey.key) as hkey:
- val, type_ = winreg.QueryValueEx(hkey, rkey.value_name)
- if type_ != winreg.REG_SZ:
- continue
- path = os.path.join(val, rkey.suffix, tool)
- if os.path.exists(path):
- self.debug_print("Using {0} from {1}".format(
- tool, rkey.sdk_name))
- return path
- except WindowsError:
- # Key doesn't exist
- pass
-
- # Add Visual C++ for Python as a fall-back in case one
- # of the other Windows SDKs isn't installed.
- # TODO: Extend checking by using setuptools/msvc.py?
- if use_windows_sdk:
- sdk_name = "Visual C++ for Python"
- localappdata = os.environ["LOCALAPPDATA"]
- suffix = "Bin\\x64" if ARCH == "x64" else "Bin"
- path = os.path.join(localappdata, vs_python, suffix, tool)
- if os.path.exists(path):
- self.debug_print("Using {0} from {1}".format(tool, sdk_name))
- return path
-
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(
- ["tools\\vswhere\\vswhere.exe", "-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))
+
+ import vswhere
+
+ path = vswhere.find_first(
+ latest=True,
+ version="[15.0,16.0)",
+ requires=["Microsoft.Component.MSBuild"],
+ prop="InstallationPath",
+ )
+
+ if path:
+ return os.path.join(path, "MSBuild", "15.0", "Bin", "MSBuild.exe")
+ else:
+ raise RuntimeError("MSBuild >=15.0 could not be found.")
+
class InstallLibPythonnet(install_lib.install_lib):
def install(self):
if not os.path.isdir(self.build_dir):
- self.warn("'{0}' does not exist -- no Python modules"
- " to install".format(self.build_dir))
+ self.warn(
+ "'{0}' does not exist -- no Python modules"
+ " to install".format(self.build_dir)
+ )
return
if not os.path.exists(self.install_dir):
@@ -425,8 +278,7 @@ def install(self):
# only copy clr.pyd/.so
for srcfile in glob.glob(os.path.join(self.build_dir, "clr.*")):
- destfile = os.path.join(
- self.install_dir, os.path.basename(srcfile))
+ destfile = os.path.join(self.install_dir, os.path.basename(srcfile))
self.copy_file(srcfile, destfile)
@@ -435,8 +287,7 @@ def run(self):
build_cmd = self.get_finalized_command("build_ext")
install_cmd = self.get_finalized_command("install")
build_lib = os.path.abspath(build_cmd.build_lib)
- install_platlib = os.path.relpath(
- install_cmd.install_platlib, self.install_dir)
+ install_platlib = os.path.relpath(install_cmd.install_platlib, self.install_dir)
for i, data_files in enumerate(self.data_files):
if isinstance(data_files, str):
@@ -449,10 +300,10 @@ def run(self):
return install_data.install_data.run(self)
+
class InstallPythonnet(install.install):
- user_options = install.install.user_options + [
- ('xplat', None, None)
- ]
+ user_options = install.install.user_options + [("xplat", None, None)]
+
def initialize_options(self):
install.install.initialize_options(self)
self.xplat = None
@@ -465,10 +316,10 @@ def run(self):
_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)
- ]
+ 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
@@ -482,6 +333,8 @@ def run(self):
return bdist_wheel.bdist_wheel.run(self)
###############################################################################
+
+
setupdir = os.path.dirname(__file__)
if setupdir:
os.chdir(setupdir)
@@ -494,42 +347,36 @@ def run(self):
name="pythonnet",
version="2.4.0.dev0",
description=".Net and Mono integration for Python",
- url='https://pythonnet.github.io/',
- license='MIT',
+ url="https://pythonnet.github.io/",
+ license="MIT",
author="The Python for .Net developers",
author_email="pythondotnet@python.org",
setup_requires=setup_requires,
long_description=_get_long_description(),
- ext_modules=[
- Extension("clr", sources=list(_get_source_files()))
- ],
- data_files=[
- ("{install_platlib}", [
- "{build_lib}/Python.Runtime.dll",
- ]),
- ],
+ ext_modules=[Extension("clr", sources=list(_get_source_files()))],
+ data_files=[("{install_platlib}", ["{build_lib}/Python.Runtime.dll"])],
cmdclass={
"install": InstallPythonnet,
"build_ext": BuildExtPythonnet,
"install_lib": InstallLibPythonnet,
"install_data": InstallDataPythonnet,
- "bdist_wheel": BDistWheelPythonnet
+ "bdist_wheel": BDistWheelPythonnet,
},
classifiers=[
- 'Development Status :: 5 - Production/Stable',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: MIT License',
- 'Programming Language :: C#',
- 'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.4',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Operating System :: Microsoft :: Windows',
- 'Operating System :: POSIX :: Linux',
- 'Operating System :: MacOS :: MacOS X',
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: MIT License",
+ "Programming Language :: C#",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Operating System :: Microsoft :: Windows",
+ "Operating System :: POSIX :: Linux",
+ "Operating System :: MacOS :: MacOS X",
],
zip_safe=False,
)
diff --git a/src/clrmodule/clrmodule.15.csproj b/src/clrmodule/clrmodule.15.csproj
deleted file mode 100644
index 2585ffdd2..000000000
--- a/src/clrmodule/clrmodule.15.csproj
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
- 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\
- $(PythonBuildDir)\$(TargetFramework)\
- 6
- prompt
- $(PYTHONNET_DEFINE_CONSTANTS)
- XPLAT
- $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
- $(DefineConstants);TRACE;DEBUG
-
-
-
- x86
-
-
- x64
-
-
-
- false
- full
-
-
- true
- pdbonly
-
-
-
- $(DefineConstants);PYTHON2;TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON2
-
-
- $(DefineConstants);PYTHON2;TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON2
-
-
- $(DefineConstants);PYTHON3;TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON3
-
-
- $(DefineConstants);PYTHON3;TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON3
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TargetPath)
- $(TargetDir)$(TargetName).pdb
-
-
-
-
-
-
-
-
diff --git a/src/clrmodule/clrmodule.csproj b/src/clrmodule/clrmodule.csproj
index 6e5ff4966..2585ffdd2 100644
--- a/src/clrmodule/clrmodule.csproj
+++ b/src/clrmodule/clrmodule.csproj
@@ -1,95 +1,95 @@
-
-
+
+
+
+
- Debug
- AnyCPU
- {86E834DE-1139-4511-96CC-69636A56E7AC}
- Library
- clrmodule
+ 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\
- v4.0
-
+ false
1591
..\..\
$(SolutionDir)\bin\
- Properties
+ $(PythonBuildDir)\$(TargetFramework)\
6
- true
prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);TRACE;DEBUG
+
x86
x64
-
- true
- PYTHON2;TRACE;DEBUG
+
+
+ false
full
-
- PYTHON2
+
true
pdbonly
+
+
+ $(DefineConstants);PYTHON2;TRACE;DEBUG
+
+
+ $(DefineConstants);PYTHON2
+
- true
- PYTHON2;TRACE;DEBUG
- full
+ $(DefineConstants);PYTHON2;TRACE;DEBUG
- PYTHON2
- true
- pdbonly
+ $(DefineConstants);PYTHON2
- true
- PYTHON3;TRACE;DEBUG
- full
+ $(DefineConstants);PYTHON3;TRACE;DEBUG
- PYTHON3
- true
- pdbonly
+ $(DefineConstants);PYTHON3
- true
- PYTHON3;TRACE;DEBUG
- full
+ $(DefineConstants);PYTHON3;TRACE;DEBUG
- PYTHON3
- true
- pdbonly
+ $(DefineConstants);PYTHON3
+
-
- ..\..\packages\UnmanagedExports.1.2.7\lib\net\RGiesecke.DllExport.Metadata.dll
- False
-
-
-
-
-
-
- Properties\SharedAssemblyInfo.cs
-
-
+
+
-
+
-
+
+
+
$(TargetPath)
$(TargetDir)$(TargetName).pdb
+
-
+
diff --git a/src/console/Console.15.csproj b/src/console/Console.15.csproj
deleted file mode 100644
index ec5008036..000000000
--- a/src/console/Console.15.csproj
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
- net40;netcoreapp2.0
- 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\
- false
- $(OutputPath)\$(AssemblyName).xml
- $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
- 1591
- ..\..\
- $(SolutionDir)\bin\
- $(PythonBuildDir)\$(TargetFramework)\
- 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
-
-
-
- false
- full
-
-
- true
- pdbonly
-
-
- true
- false
- full
-
-
- true
- true
- portable
-
-
-
- $(DefineConstants);DEBUG;TRACE
-
-
- $(DefineConstants)
-
-
-
- $(PythonManifest)
-
-
-
-
-
-
- Properties\SharedAssemblyInfo.cs
-
-
-
-
-
- Python.Runtime.dll
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/console/Console.csproj b/src/console/Console.csproj
index ea88b6356..e92a165d3 100644
--- a/src/console/Console.csproj
+++ b/src/console/Console.csproj
@@ -1,23 +1,36 @@
-
-
+
+
- Debug
- AnyCPU
- {E29DCF0A-5114-4A98-B1DD-71264B6EA349}
+ net40;netcoreapp2.0
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
Exe
nPython
Python.Runtime
- bin\nPython.xml
+ nPython
+ 2.4.0
+ false
+ false
+ false
+ false
+ false
+ false
bin\
- v4.0
-
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
1591
..\..\
$(SolutionDir)\bin\
- Properties
+ $(PythonBuildDir)\$(TargetFramework)\
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
@@ -25,77 +38,57 @@
x64
-
- true
- DEBUG;TRACE
+
+
+ false
full
-
-
-
+
true
pdbonly
-
+
true
- DEBUG;TRACE
+ false
full
-
-
-
- true
- pdbonly
-
-
+
true
- DEBUG;TRACE
- full
-
-
-
-
true
- pdbonly
+ portable
-
- true
- DEBUG;TRACE
- full
+
+
+ $(DefineConstants);DEBUG;TRACE
-
-
-
- true
- pdbonly
+
+ $(DefineConstants)
+
$(PythonManifest)
-
+
-
Properties\SharedAssemblyInfo.cs
-
-
+
Python.Runtime.dll
-
- {097b4ac0-74e9-4c58-bcf8-c69746ec8271}
- Python.Runtime
-
+
-
+
+
+
-
+
diff --git a/src/embed_tests/Python.EmbeddingTest.15.csproj b/src/embed_tests/Python.EmbeddingTest.15.csproj
deleted file mode 100644
index a741a589e..000000000
--- a/src/embed_tests/Python.EmbeddingTest.15.csproj
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
- net40;netcoreapp2.0
- x64;x86
- DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
- Exe
- false
- Python.EmbeddingTest
- Python.EmbeddingTest
- Python.EmbeddingTest
- 2.4.0
- false
- false
- false
- false
- bin\
- false
- $(OutputPath)\$(AssemblyName).xml
- $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
- 1591
- ..\..\
- $(SolutionDir)\bin\
- $(OutputPath)\$(TargetFramework)_publish
- 6
- prompt
- $(PYTHONNET_DEFINE_CONSTANTS)
- XPLAT
- $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
- $(DefineConstants);NETCOREAPP
- $(DefineConstants);NETSTANDARD
- $(DefineConstants);TRACE;DEBUG
- $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
-
-
- x86
-
-
- x64
-
-
-
- false
- full
-
-
- true
- pdbonly
-
-
- true
- false
- full
-
-
- true
- true
- portable
-
-
-
- $(DefineConstants);DEBUG;TRACE
-
-
- $(DefineConstants)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TargetPath)
- $(TargetDir)$(TargetName).pdb
-
-
-
-
-
-
-
-
diff --git a/src/embed_tests/Python.EmbeddingTest.csproj b/src/embed_tests/Python.EmbeddingTest.csproj
index 6aa48becc..c09295252 100644
--- a/src/embed_tests/Python.EmbeddingTest.csproj
+++ b/src/embed_tests/Python.EmbeddingTest.csproj
@@ -1,22 +1,37 @@
-
-
+
+
+
- Debug
- AnyCPU
- {4165C59D-2822-499F-A6DB-EACA4C331EB5}
- Library
+ net40;netcoreapp2.0
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ Exe
+ false
Python.EmbeddingTest
Python.EmbeddingTest
- bin\Python.EmbeddingTest.xml
+ Python.EmbeddingTest
+ 2.4.0
+ false
+ false
+ false
+ false
bin\
- v4.0
-
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
1591
..\..\
- $(SolutionDir)\bin\
+ $(SolutionDir)\bin\
+ $(OutputPath)\$(TargetFramework)_publish
6
- true
prompt
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);NETCOREAPP
+ $(DefineConstants);NETSTANDARD
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
x86
@@ -24,105 +39,78 @@
x64
-
- true
- DEBUG;TRACE
+
+
+ false
full
-
-
-
+
true
pdbonly
-
+
true
- DEBUG;TRACE
+ false
full
-
-
-
- true
- pdbonly
-
-
+
true
- DEBUG;TRACE
- full
-
-
-
-
true
- pdbonly
+ portable
-
- true
- DEBUG;TRACE
- full
+
+
+ $(DefineConstants);DEBUG;TRACE
-
-
-
- true
- pdbonly
+
+ $(DefineConstants)
+
-
-
- ..\..\packages\NUnit.3.7.1\lib\net40\nunit.framework.dll
-
-
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}
- Python.Runtime
-
+
+
-
+
-
+
+
+
$(TargetPath)
$(TargetDir)$(TargetName).pdb
+
-
+
+
diff --git a/src/runtime/Python.Runtime.15.csproj b/src/runtime/Python.Runtime.15.csproj
deleted file mode 100644
index 794645994..000000000
--- a/src/runtime/Python.Runtime.15.csproj
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
- net40;netstandard2.0
- 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
- $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
- 1591;NU1701
- ..\..\
- $(SolutionDir)\bin\
- $(PythonBuildDir)\$(TargetFramework)\
- 6
- True
- ..\pythonnet.snk
- $(PYTHONNET_DEFINE_CONSTANTS)
- XPLAT
- $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
- $(DefineConstants);NETSTANDARD
- $(DefineConstants);TRACE;DEBUG
- $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
- $(PYTHONNET_PY2_VERSION)
- PYTHON27
- $(PYTHONNET_PY3_VERSION)
- PYTHON37
- $(PYTHONNET_WIN_DEFINE_CONSTANTS)
- UCS2
- $(PYTHONNET_MONO_DEFINE_CONSTANTS)
- UCS4;MONO_LINUX;PYTHON_WITH_PYMALLOC
- $(PYTHONNET_INTEROP_FILE)
-
-
- false
- full
-
-
- true
- pdbonly
-
-
- true
- false
- full
-
-
- true
- true
- portable
-
-
-
- $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants)
-
-
- $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants)
-
-
- $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants);TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants);TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants)
-
-
- $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants)
-
-
- $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants);TRACE;DEBUG
-
-
- $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants);TRACE;DEBUG
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- clr.py
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TargetPath)
- $(TargetDir)$(TargetName).pdb
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/runtime/Python.Runtime.csproj b/src/runtime/Python.Runtime.csproj
index fc155ca91..794645994 100644
--- a/src/runtime/Python.Runtime.csproj
+++ b/src/runtime/Python.Runtime.csproj
@@ -1,170 +1,140 @@
-
-
+
+
- Debug
- AnyCPU
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}
- Library
- Python.Runtime
+ net40;netstandard2.0
+ AnyCPU
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
+ net45
Python.Runtime
- bin\Python.Runtime.xml
+ Python.Runtime
+ Python.Runtime
+ 2.4.0
+ false
+ false
+ false
+ false
+ false
+ false
bin\
- v4.0
-
- 1591
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
+ 1591;NU1701
..\..\
- $(SolutionDir)\bin\
- Properties
+ $(SolutionDir)\bin\
+ $(PythonBuildDir)\$(TargetFramework)\
6
- true
- false
+ True
..\pythonnet.snk
+ $(PYTHONNET_DEFINE_CONSTANTS)
+ XPLAT
+ $(DefineConstants);$(CustomDefineConstants);$(BaseDefineConstants);
+ $(DefineConstants);NETSTANDARD
+ $(DefineConstants);TRACE;DEBUG
+ $(NuGetPackageRoot)\microsoft.targetingpack.netframework.v4.5\1.0.1\lib\net45\
+ $(PYTHONNET_PY2_VERSION)
+ PYTHON27
+ $(PYTHONNET_PY3_VERSION)
+ PYTHON37
+ $(PYTHONNET_WIN_DEFINE_CONSTANTS)
+ UCS2
+ $(PYTHONNET_MONO_DEFINE_CONSTANTS)
+ UCS4;MONO_LINUX;PYTHON_WITH_PYMALLOC
+ $(PYTHONNET_INTEROP_FILE)
-
-
-
-
- PYTHON2;PYTHON27;UCS4
- true
- pdbonly
+
+ false
+ full
-
- PYTHON3;PYTHON37;UCS4
+
true
pdbonly
-
+
true
- PYTHON2;PYTHON27;UCS4;TRACE;DEBUG
false
full
-
+
true
- PYTHON3;PYTHON37;UCS4;TRACE;DEBUG
- false
- full
+ true
+ portable
+
+
+
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants)
+
+
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants)
+
+
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonMonoDefineConstants);TRACE;DEBUG
+
+
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonMonoDefineConstants);TRACE;DEBUG
- PYTHON2;PYTHON27;UCS2
- true
- pdbonly
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants)
- PYTHON3;PYTHON37;UCS2
- true
- pdbonly
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants)
- true
- PYTHON2;PYTHON27;UCS2;TRACE;DEBUG
- false
- full
+ $(DefineConstants);PYTHON2;$(Python2Version);$(PythonWinDefineConstants);TRACE;DEBUG
- true
- PYTHON3;PYTHON37;UCS2;TRACE;DEBUG
- false
- full
+ $(DefineConstants);PYTHON3;$(Python3Version);$(PythonWinDefineConstants);TRACE;DEBUG
-
-
-
-
-
-
- Properties\SharedAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
clr.py
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$(TargetPath)
$(TargetDir)$(TargetName).pdb
+
+
+
+
+
-
+
diff --git a/src/testing/Python.Test.15.csproj b/src/testing/Python.Test.15.csproj
deleted file mode 100644
index da20ed2ef..000000000
--- a/src/testing/Python.Test.15.csproj
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
- net40;netstandard2.0
- x64;x86
- DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
- Python.Test
- Python.Test
- Python.Test
- 2.4.0
- bin\
- false
- $(OutputPath)\$(AssemblyName).xml
- $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
- 1591,0067
- ..\..\
- $(SolutionDir)\bin\
- $(PythonBuildDir)\$(TargetFramework)\
- 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
-
-
-
- false
- full
-
-
- true
- pdbonly
-
-
- true
- false
- full
-
-
- true
- true
- portable
-
-
-
- $(DefineConstants);DEBUG;TRACE
-
-
- $(DefineConstants)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TargetPath)
- $(TargetDir)$(TargetName).pdb
-
-
-
-
-
-
-
diff --git a/src/testing/Python.Test.csproj b/src/testing/Python.Test.csproj
index 27639ed5a..1ee54567b 100644
--- a/src/testing/Python.Test.csproj
+++ b/src/testing/Python.Test.csproj
@@ -1,23 +1,30 @@
-
-
+
+
- Debug
- AnyCPU
- {6F401A34-273B-450F-9A4C-13550BE0767B}
- Library
+ net40;netstandard2.0
+ x64;x86
+ DebugMono;DebugMonoPY3;ReleaseMono;ReleaseMonoPY3;DebugWin;DebugWinPY3;ReleaseWin;ReleaseWinPY3
Python.Test
Python.Test
- bin\Python.Test.xml
+ Python.Test
+ 2.4.0
bin\
- v4.0
-
+ false
+ $(OutputPath)\$(AssemblyName).xml
+ $(OutputPath)\$(TargetFramework)\$(AssemblyName).xml
1591,0067
..\..\
$(SolutionDir)\bin\
+ $(PythonBuildDir)\$(TargetFramework)\
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
@@ -25,90 +32,55 @@
x64
-
- true
- DEBUG;TRACE
+
+
+ false
full
-
-
-
+
true
pdbonly
-
+
true
- DEBUG;TRACE
+ false
full
-
-
-
- true
- pdbonly
-
-
+
true
- DEBUG;TRACE
- full
-
-
-
-
true
- pdbonly
+ portable
-
- true
- DEBUG;TRACE
- full
+
+
+ $(DefineConstants);DEBUG;TRACE
-
-
-
- true
- pdbonly
+
+ $(DefineConstants)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
- {097B4AC0-74E9-4C58-BCF8-C69746EC8271}
- Python.Runtime
-
+
+
+
+
+
-
+
+
+
$(TargetPath)
$(TargetDir)$(TargetName).pdb
-
+
+
-
\ No newline at end of file
+
diff --git a/tools/nuget/nuget.exe b/tools/nuget/nuget.exe
deleted file mode 100644
index 463f8e137..000000000
Binary files a/tools/nuget/nuget.exe and /dev/null differ
diff --git a/tools/vswhere/vswhere.exe b/tools/vswhere/vswhere.exe
deleted file mode 100644
index 3eb2df009..000000000
Binary files a/tools/vswhere/vswhere.exe and /dev/null differ