diff --git a/pythonnet/src/console/Console.csproj b/pythonnet/src/console/Console.csproj index ddf4cbe4e..2bbb182b7 100644 --- a/pythonnet/src/console/Console.csproj +++ b/pythonnet/src/console/Console.csproj @@ -192,6 +192,9 @@ + + Python.Runtime.dll + diff --git a/pythonnet/src/console/pythonconsole.cs b/pythonnet/src/console/pythonconsole.cs index 9a58525b1..2184c8730 100644 --- a/pythonnet/src/console/pythonconsole.cs +++ b/pythonnet/src/console/pythonconsole.cs @@ -8,6 +8,7 @@ // ========================================================================== using System; +using System.Reflection; using Python.Runtime; namespace Python.Runtime { @@ -27,6 +28,30 @@ public static int Main(string[] args) { return i; } -} + // Register a callback function to load embedded assmeblies. + // (Python.Runtime.dll is included as a resource) + private sealed class AssemblyLoader { + public AssemblyLoader() { + AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { + String resourceName = new AssemblyName(args.Name).Name + ".dll"; + + // looks for the assembly from the resources and load it + using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { + if (stream != null) { + Byte[] assemblyData = new Byte[stream.Length]; + stream.Read(assemblyData, 0, assemblyData.Length); + return Assembly.Load(assemblyData); + } + } + + return null; + }; + } + }; + + private static AssemblyLoader assemblyLoader = new AssemblyLoader(); + +}; + }