Thanks Jimmy, it really works now.
I have written a small howto for those interested:
http://gui-at.blogspot.com/2010/05/distributing-silverlight-application.html
--
-- Lukáš
Jimmy Schementi wrote:
Ah **duh**, though Microsoft.Scripting.Silverlight.dll calls
ScriptRuntime.LoadAssembly on each AssemblyPart in the
AppManifest.xaml, it does **not** do the same thing for DLLs in zip
files referenced by ExtensionPart, since Silverlight only gives us a
way of getting files out of a zip, not enumerating its contents.
So, to correct myself, if you're using ExtensionParts, you'll have to
call clr.AddReference for each DLL you want loaded. The reason why you
don't see the expected types is because IronPython doesn't know about
them.
We /could/ require that those zip files have a AppManifest.xaml, which
would list the DLLs, and then we could parse that and load the DLLs.
Though asking Silverlight to implement ZIP contents enumeration is
probably the best =)
~js
*From:* Lukas Cenovsky [mailto:cenov...@bakalari.cz]
*Sent:* Wednesday, April 28, 2010 6:14 AM
*To:* Discussion of IronPython; Jimmy Schementi
*Subject:* Re: [IronPython] AddReference to Silverlight toolkit assemblies
Well, I was wrong when I said it worked. Here is the scenario:
I have necessary .dlls in separate file called /SLToolkit.zip/ which I
reference in AppManifest.xaml:
<Deployment.ExternalParts>
<ExtensionPart Source="Microsoft.Scripting.zip" />
<ExtensionPart Source="SLToolkit.zip" />
</Deployment.ExternalParts>
There are the following files in /SLToolkit.zip/:
System.ComponentModel.DataAnnotations.dll
System.Windows.Controls.dll
System.Windows.Controls.Data.dll
System.Windows.Controls.Data.Input.dll
System.Windows.Data.dll
I want to use /ChildWindow/ control. It works when I use it in XAML
and load the XAML with XamlReader. But it does not work when I want to
load it from code. If fails on importing because /ChildWindow/ is not
in /System.Windows.Controls/ namespace.
I put System.Windows.Controls.dll into .xap file and test the
following in Silverlight REPL:
py> import System.Windows.Controls
=> None
py> dir(System.Windows.Controls)
=> ['Border', 'Button', 'Canvas', 'CheckBox',
'CleanUpVirtualizedItemEventArgs', ...]
py> clr.AddReferenceToFile('System.Windows.Controls.dll')
=> None
py> dir(System.Windows.Controls)
=> ['Border', 'Button', 'Calendar', 'CalendarBlackoutDatesCollection',
'CalendarDateChangedEventArgs', 'CalendarDateRange', 'CalendarMode',
'CalendarModeChangedEventArgs', 'CalendarSelectionMode', 'Canvas',
'CheckBox', 'ChildWindow', 'CleanUpVirtualizedItemEventArgs', ...]
It looks like the controls from System.Windows.Controls.dll are not
merged into /System.Windows.Controls/ namespace.
Is it bug or do I do something wrong?
--
-- Lukáš
Jimmy Schementi wrote:
Lukas,
When you use ExtensionPart, it calls Assembly.Load on each file in the
zip file referenced, so you don't need to do clr.Addreference.
System.Windows.Data.dll and System.Windows.Controls.Data.dll are not
DLLs in Silverlight; they are in the Silverlight SDK. So you'll have
to package them up into a separate zip file which you include in your
AppManfest, just like you did with the SLToolkit.zip.
~js
*From:* users-boun...@lists.ironpython.com
<mailto:users-boun...@lists.ironpython.com>
[mailto:users-boun...@lists.ironpython.com] *On Behalf Of *Lukas Cenovsky
*Sent:* Tuesday, March 23, 2010 5:42 PM
*To:* users@lists.ironpython.com <mailto:users@lists.ironpython.com>
*Subject:* [IronPython] AddReference to Silverlight toolkit assemblies
Hi all,
I use Silverlight toolkit in my IronPython Silverlight app. To lower
bandwidth, I put all necessary Silverlight toolkit .dlls into separate
file called /SLToolkit.zip/ which I reference in AppManifest.xaml:
<Deployment.ExternalParts>
<ExtensionPart Source="Microsoft.Scripting.zip" />
<ExtensionPart Source="SLToolkit.zip" />
</Deployment.ExternalParts>
This works nicely if I don't need to reference assembly already
existing in Silverlight - e.g. I do
clr.AddReference('System.Windows.Controls.Data')
and use /DataGrid/. Unfortunately, when I need to reference
/PagedCollectionView /from System.Windows.Data, this approach does not
work. Trying
from System.Windows.Data import PagedCollectionView
fails on /ImportError: Cannot import name PagedCollectionView/. Doing
import System.Windows.Data
System.Windows.Data.PagedCollectionView(some_data)
fails with /AttributeError: attribute 'PagedCollectionView' of
'namespace#' object is read-only/. When I try to add
clr.AddReference('System.Windows.Data')
if fails with: /IOError: [Errno 2] could not find assembly:
System.Windows.Data (check the Web server)/.
The only way how to make this work is to put System.Windows.Data.dll
into .xap file and reference it with
clr.AddReferenceToFile('System.Windows.Data.dll')
from System.Windows.Data import PagedCollectionView
Is there a way to make it work when System.Windows.Data.dll is in the
separate file? Or should I use another approach?
Thanks,
--
-- Lukáš
------------------------------------------------------------------------
_______________________________________________
Users mailing list
Users@lists.ironpython.com <mailto: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