Dino Viehland wrote:
For some reason the re-write didn't work. After the re-write the new binary in ildasm should have a manifest that looks like:

.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
  .ver 2:0:5:0
}
.assembly extern Microsoft.Scripting
{
  .publickeytoken = (31 BF 38 56 AD 36 4E 35 )
  .ver 0:9:5:0
}
.assembly extern IronPython
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) .ver 2:0:5:0
}
.assembly extern Microsoft.Scripting.Core
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) .ver 0:9:5:0
}

Where the key part is the 5's in all of the version strings.    I did:

ildasm froob.dll /out:froob.txt

[updated version numbers]

ilasm /DLL froob.txt /resource:froob.res /out:froob2.dll

and it seems to work.

Hmm... after I do the rewrite I *still* get the exception once I import from the assembly ("from froob import Smoog"). I wonder if this is because I'm on 64bit Vista?

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


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

Dino Viehland wrote:
Do you have a simple repro XAP you can send me and I'll take a look?

I'm not entirely sure I'll know what's going on as CoreCLR isn't the
CLR I'm used to debugging but it's not that different :)


Attached is a xap file. It has a very simple package compiled with Pyc
- and importing it throws the same error.

Michael

-----Original Message-----
From: users-boun...@lists.ironpython.com [mailto:users-
boun...@lists.ironpython.com] On Behalf Of Michael Foord
Sent: Tuesday, April 21, 2009 2:41 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Compiling with Pyc for Silverlight

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

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

--
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


--
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

Reply via email to