No. You'll have to sync and build From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of hellosticky Sent: Tuesday, August 26, 2008 4:10 PM To: 'Curt Hagenlocher'; 'Discussion of IronPython' Subject: Re: [IronPython] Loading DLL from pyc.py into ScriptEngine
Hi Curt, yes, i'm using vanilla beta 4. Are there places to grab a nightly drop or do I need to compile from source? Thanks, ________________________________ From: Curt Hagenlocher [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 26, 2008 7:04 PM To: [EMAIL PROTECTED]; Discussion of IronPython Subject: Re: [IronPython] Loading DLL from pyc.py into ScriptEngine Are you using Beta 4? You probably need to grab a post-beta-4 nightly drop; we got rid of the IsComObject constructions that don't work in partial trust, but it happened right around the time Beta 4 was released and may not have made it in. On Tue, Aug 26, 2008 at 3:54 PM, hellosticky <[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>> wrote: Okay, I tried it but got a Security Exception in System.Scripting.Com.ComMetaObject.IsComObject. The permission requested was for UnmanagedCode. I'm running in partial trust so obviously I can't be giving the code UnmanagedCode privilege. Is there some flag I have to set that says I'm in partial trust? FirstPermissionThatFailed: {<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0<http://2.0.0.0/>, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode"/> } Server stack trace: at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException) at System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Assembly asm, SecurityAction action) at System.Scripting.Com.ComMetaObject.IsComObject(Object obj) at System.Scripting.Actions.MetaAction.Bind[T](Object[] args) at System.Scripting.Actions.CallSite`1.CreateNewRule(Rule`1 originalMonomorphicRule, Object[] args) at System.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args) at System.Scripting.Actions.UpdateDelegates.Update6[T,T0,T1,T2,T3,T4,T5,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level) at IronPython.Runtime.Operations.PythonOps.ImportTop(CodeContext context, String fullName, Int32 level) at <module>$2##2(Closure , Scope , LanguageContext ) at System.Scripting.ScriptCode.InvokeTarget(LambdaExpression code, Scope scope) at System.Scripting.Runtime.OptimizedScriptCode.InvokeTarget(LambdaExpression code, Scope scope) at System.Scripting.SourceUnit.Execute(Scope scope, ErrorSink errorSink) at Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope) at DlrHostedProvider.OnRender() Here is the code I used (approximately): StringBuilder sb = new StringBuilder(100); using (MemoryStream ms = new MemoryStream()) { using (StringWriter writer = new StringWriter(sb)) { Assembly assembly = Assembly.Load(AssemblyName); ScriptRuntime runtime = ScriptRuntime.Create(); runtime.LoadAssembly(assembly); runtime.IO.SetOutput(ms, writer); ScriptEngine engine = runtime.GetEngine(GetEngineName()); ScriptScope scope = engine.CreateScope(); string code = string.Format(@"import clr clr.AddReference(""{0}"") import {1} ", AssemblyName, AssemblyType.Replace(".py", "") ); ScriptSource source = engine.CreateScriptSourceFromString( code, SourceCodeKind.Statements ); source.Execute(scope); } } content = sb.ToString(); Thanks, > -----Original Message----- > From: hellosticky [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>] > Sent: Tuesday, August 26, 2008 6:46 PM > To: 'Srivatsn Narayanan'; 'Discussion of IronPython' > Subject: RE: [IronPython] Loading DLL from pyc.py into ScriptEngine > > Thanks, I will try that. Can you explain again how just doing > "import test" executes the test.py file that was compiled > into the DLL? It's not very logical.. > > Thanks, > > > -----Original Message----- > > From: Srivatsn Narayanan [mailto:[EMAIL PROTECTED]<mailto:[EMAIL > > PROTECTED]>] > > Sent: Tuesday, August 26, 2008 6:34 PM > > To: Discussion of IronPython; [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]> > > Subject: RE: [IronPython] Loading DLL from pyc.py into ScriptEngine > > > > Also Assembly.Load is not sufficient to be able to import the > > compiled code. A clr.AddReference needs to be done which > > publishes the module. The easiest way to do that is include > > it in the string as Michael pointed out. > > > > ScriptSource source = > > engine.CreateScriptSourceFromString("import > > clr;clr.AddReference(\"test.dll\");import test", > > SourceCodeKind.Statements); > > > > You might need to add the current folder to the path as well > > before the clr.AddReference. > > > > -----Original Message----- > > From: [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]> > > [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>] On Behalf Of > Michael Foord > > Sent: Tuesday, August 26, 2008 3:12 PM > > To: [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>; Discussion of IronPython > > Subject: Re: [IronPython] Loading DLL from pyc.py into ScriptEngine > > > > hellosticky wrote: > > > I also tried: > > > > > > Assembly assembly = Assembly.Load(AssemblyName); > > > ScriptRuntime runtime = ScriptRuntime.Create(); > > > runtime.LoadAssembly(assembly); > > > ScriptScope scope = runtime.ExecuteFile("test.py"); > > > object o = scope.Execute(null); > > > > > > But that threw a script not found exception saying it could > > find the source file for test.py, so it would seem like this > > wants to recompile it > > > > > > > > >> -----Original Message----- > > >> From: hellosticky [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>] > > >> Sent: Tuesday, August 26, 2008 5:52 PM > > >> To: IronPython > > >> Subject: Loading DLL from pyc.py into ScriptEngine > > >> > > >> Hi, > > >> > > >> I created an IronPython DLL with "ipy.exe pyc.py /out:test > > >> /target:dll test.py" which created test.dll. Now, from C#, > > >> I'd like to execute test.py from test.dll. I just opened up > > >> dlr-spec-hosting and there's a CreateScriptSourceFromStream, > > >> but I don't see that in 2.0 Beta 4 bits. Here is where I'm > > >> stuck. How do I get that assembly into the engine and then > > >> execute test.py? > > > > Well - the easiest way is to execute 'import test' after > having added > > the assembly. This should execute the code in order to create > > a module. > > > > ScriptScope scope = engine.CreateScope(); > > ScriptSource source = > > engine.CreateScriptSourceFromString("import test", > > SourceCodeKind.Statements); > > engine.Execute(scope); > > > > There is an API for setting a stream as stdout on an engine - > > 'runtime.IO.SetOutput'. > > > > Michael > > > > >> Also, I'd like to get the output into a > > >> string (I guess I can just redirect Console.Out?) > > >> > > >> public string Execute(string assemblyName) > > >> { > > >> string content = null; > > >> > > >> Assembly assembly = Assembly.Load(assemblyName); > > >> ScriptRuntime runtime = ScriptRuntime.Create(); > > >> ObjectOperations operations = runtime.CreateOperations(); > > >> ScriptEngine engine = runtime.GetEngine("py"); > > >> // magic.. > > >> > > >> return content; > > >> } > > >> > > >> Thanks, > > >> > > > > > > _______________________________________________ > > > Users mailing list > > > [email protected]<mailto:[email protected]> > > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > > > > > > > -- > > http://www.ironpythoninaction.com/ > > http://www.voidspace.org.uk/ > > http://www.trypython.org/ > > http://www.ironpython.info/ > > http://www.theotherdelia.co.uk/ > > http://www.resolverhacks.net/ > > > > _______________________________________________ > > Users mailing list > > [email protected]<mailto:[email protected]> > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > > _______________________________________________ Users mailing list [email protected]<mailto:[email protected]> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
