[IronPython] Compiling IronPython for .NET 3.5

Fernando Correia fernandoacorreia at gmail.com
Fri Sep 26 14:03:04 CEST 2008


Thanks to the team for facing the heavy changes that were required to
improve the compatibility of IronPython and DLR with projects that target
.NET Framework 3.5. From Harry's account[1], we can see that it took a lot
of smarts and guts to do.

[1] http://devhawk.net/2008/09/17/DLR+Namespace+Change+Fire+Drill.aspx

Since that blog post hints that it should be possible to produce a native
3.5 version of IPy and DLR that wouldn't give that warning1685, I tried to
follow the instructions:

> If you're willing to compile from source yourself, it's fairly easy
> to build a set of binaries for a specific version .NET that doesn't
> have the warning. If you're building for v3.5, you need to remove
> Extension.cs from the three projects that have a copy of it
> (Microsoft.Scripting.Core, Microsoft.Scripting, IronPython) and
> add a reference to System.Core.dll.

Well, I tried that, and I didn't find it fairly easy. My attempt was like
this:

1. Open IronPython.sln
2. Remove projects Chiron, IronPythonConsole, IronPythonTest,
IronPythonWindow, Microsoft.Scripting.Silverlight
3. Change all 4 remaining projects to target Framework 3.5.
4. Clean and build the solution in release mode. Get errors like:
* The referenced component 'System' could not be found.
* The referenced component 'mscorlib' could not be found.
* The referenced component 'System.Core' could not be found.
5. Remove all references that were not found and add them again.
6. Delete these files:
* IronPython\Extension.cs
* Microsoft.Scripting.Core\Utils\Extension.cs
* Microsoft.Scripting\Utils\Extension.cs
7. Get errors like:
* Error    1    'StrongBox' is an ambiguous reference between
'System.Runtime.CompilerServices.StrongBox<bool>' and
'Microsoft.Runtime.CompilerServices.StrongBox<bool>'
8. Replace all occurrences of StrongBox with
Microsoft.Runtime.CompilerServices.StrongBox.
9. Repeat for IStrongBox.
10. Get errors like:
* 'Func' is an ambiguous reference between
'System.Func<Microsoft.Scripting.Actions.CallSite,object,int>' and
'Microsoft.Func<Microsoft.Scripting.Actions.CallSite,object,int>'
11. Replace all occurrences of Func with Microsoft.Func.
12. Again the same for 'System.Action' and 'Microsoft.Action'.
13. Now all 4 projects compile for framework 3.5. I don't feel like
deploying them, though, for fear of some side-efect of all those
replacements.

If anyone can tell me where I made a mistake, I appreciate.

Cheers!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20080926/3a46e50e/attachment.html>


More information about the Ironpython-users mailing list