Dino Viehland wrote:
You're compiling to a DLL and then trying to import (vs compiling to an EXE)?


Yes - it's support packages we're trying to compile. I would have thought that compiling an exe for Silverlight was a lost cause... :-)

There are two motivations, mainly speeding up import time but also source code obfuscation. If the assembly is genuinely serializable then we may at least achieve the second, so long as it doesn't make import time worse.

Michael

-----Original Message-----
From: users-boun...@lists.ironpython.com [mailto:users-
boun...@lists.ironpython.com] On Behalf Of Michael Foord
Sent: Monday, April 20, 2009 3:07 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Compiling with Pyc for Silverlight

Michael Foord wrote:
Jb Evain wrote:
Hey Michael,

On 4/20/09, Michael Foord <fuzzy...@voidspace.org.uk> wrote:

 I guess a full IL writer would be needed - which means back to
Cecil and
the like and seeing if parts of them could be run on Silverlight.
*sigh*

You just want to change the references to an assembly from the
desktop
version to the SL version? With Cecil it's like:

var assembly = AssemblyFactory.GetAssembly (file);
foreach (var reference in assembly.MainModule.AssemblyReferences) {
    if (!IsTargetAssembly (reference))
        continue;

    reference.Version = new Version (2, 0, 5, 0);
}
AssemblyFactory.SaveAssembly (assembly, file);

Now it doesn't guarantee that the resulting assembly is coherent,
visibility wise, as you may have used methods that are not visible
or
not existent in SL.


Thanks for that - if it would work it would be really useful,
however...
I think I've done the equivalent of this using ildasm / ilasm. I've
disassembled the assembly to IL, then replaced the references with
the
references to Silverlight assemblies and re-assembled.

The resulting assembly throws exactly the same error - which makes me
think that the assemblies compiled by Pyc are using things that
aren't
available in Silverlight. *However* -
Microsoft.Runtime.CompilerServices.StrongBox does exist in
Silverlight. I think I'll try the whole process again just to see. My
guess is that rewriting would require an intimate knowledge of the
differences between the CoreCLR and standard .NET.

No - I've rerun the whole process from compiling with Pyc through to
replacing the references in the il and reassembling. Same error. Shame.

SystemError: Could not load type
'Microsoft.Runtime.CompilerServices.StrongBox`1' from assembly
'Microsoft.Scripting.Core, Version=2.0.5.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'.app.py

Michael Foord

I can't import it in a Silverlight application though (the following
code does work on the desktop version of IronPython):

import clr
clr.AddReference('Microsoft.Scripting')
clr.AddReference('Microsoft.Scripting.Core')
from  Microsoft.Runtime.CompilerServices import StrongBox

ImportError: No module named Runtime

Michael

--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


--
http://www.ironpythoninaction.com/

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to