I assumed you were using .NET Core when you said you were using dotnet 2.0.3. So you are compiling using ipy.exe (which is a .NET 4.5 app) and then using the assembly from a .NET Core 2.0 application? The .NET Core API doesn't expose System.Runtime.CompilerServices.Closure so that might be the reason things are failing...
Stéphane On Tue, Apr 3, 2018 at 5:53 PM, Josiah Kiehl <jki...@riotgames.com> wrote: > Sorry if I'm not understanding... when you say "full framework version", > do you mean the stand alone executable, ipy.exe? > > I compiled the dll with ipy.exe running a simple script: > > > ipy compile.py > > # compile.py > import clr > > clr.CompileModules("compiled.dll", "test.py") > > This works just fine. > > Then I tried to load "compiled.dll" via the embedded IronPython in a > simple dotnet CLI app and it produces the above error: > > ScriptEngine engine = Python.CreateEngine(); > engine.Runtime.LoadAssembly(Assembly.LoadFile(@"C:\some\ > path\compiled.dll")); > var scope = engine.Runtime.ImportModule("test"); > > Is that what's not supported? Loading the dll in the embedded IronPython? > > Thanks for your help, I am super hopeful I can get this working. > Josiah > > On Tue, Apr 3, 2018 at 2:39 PM Stéphane Lozier <stephane.loz...@gmail.com> > wrote: > >> The .NET Core version of IronPython does not support assembly generation. >> I haven't tried it myself, but you could probably compile the assembly >> using the full framework version and then run it with .NET Core 2.0 >> (assuming you're not using unsupported APIs). >> >> Stéphane >> >> >> On Tue, Apr 3, 2018, 5:16 PM Josiah Kiehl, <jki...@riotgames.com> wrote: >> >>> Oh, I'm on dotnet 2.0.3, if that's relevant information. >>> >>> On Tue, Apr 3, 2018 at 2:15 PM Josiah Kiehl <jki...@riotgames.com> >>> wrote: >>> >>>> I'm trying to execute this example code: >>>> https://stackoverflow.com/questions/32639893/call-dll- >>>> function-from-c-sharp-ironpython >>>> >>>> I realize the posted question is a few years old at this point... has >>>> something changed in how python, compiled to a DLL via clr.CompileModule, >>>> is loaded? >>>> >>>> I'm getting this error when I run the code in the example at the above >>>> link: >>>> Unhandled Exception: System.TypeLoadException: Could not load type >>>> 'System.Runtime.CompilerServices.Closure' from assembly 'System.Core, >>>> Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. >>>> at DLRCachedCode.test$1(CodeContext $globalContext, FunctionCode >>>> $functionCode) >>>> at IronPython.Compiler.OnDiskScriptCode.Run() >>>> >>>> (full stack: https://gist.github.com/capoferro/ >>>> 5a730088582b8cd36591be510d6ca2fc) >>>> >>>> My ipy.exe, which did the compilation, is 2.7.8.0 and my embedded >>>> IronPython is 2.7.8.1, though I get the same error on 2.7.8.0. >>>> >>>> Am I missing something obvious or is there a better example to use? >>>> >>>> My end goal is to be able to take a python module defined in a file >>>> (foo.py) with some functions defined, compile it into a dll via >>>> CompileModule, then load it directly from the dll via ImportModule to skip >>>> the performance hit of interpreting the Python at runtime. >>>> >>>> Thanks! >>>> Josiah >>>> >>>> >>>> _______________________________________________ >>> Ironpython-users mailing list >>> Ironpython-users@python.org >>> https://mail.python.org/mailman/listinfo/ironpython-users >>> >>
_______________________________________________ Ironpython-users mailing list Ironpython-users@python.org https://mail.python.org/mailman/listinfo/ironpython-users