Silverlight 2 Beta 2 の Managed JScript で LoadModule が動かない?
追記:結果的に動くようになりました。
Silverlight 2 Beta 2 の Managed JScript で LoadModule が動いた。 - DenkiYagi
タイトルのままの事をやろうとしてどうも動作してくれない…。というのをはてブにとりあえずメモ残しておいたら捕捉されちゃったので状況を書かねば…。
(追記)Silverlight Dynamic Language SDK beta2のchironを使ってみたら動いた。なんだよー。Silverlight SDK beta2のchironと何が違うってんだよー。
(追記)chironも違うけど、DLR関係のdllが違うみたい。
(さらに追記)はてブにコメントが。terurou beta2 DLRでのLoadModule,
について。ここに書いてある方法をためしたけど動かないんだが…。どういう状況なのか知りたいです!!
そもそも、beta 1 の時に LoadModule なんて使った事がなく、これを書いている時点で正常に動作してるところを見たことがないので、根本のところを間違えてるような気もする。
とりあえずやった事を書いてみる。
プログラムの作成
同じディレクトリに以下のファイルを配置した。
- app.js
- app.xaml
- lib.js
プログラム自体はError: Silverlight.netを参考にした。
app.js
Import("System.Windows.*"); Import("System.Windows.Controls.*"); Import("System.Windows.Browser.HtmlPage"); xaml = Application.Current.LoadRootVisual(new UserControl(), 'app.xaml'); //util = LoadModule("lib", "js"); util = LoadModuleFromFile("lib", "js"); xaml.TextBlock1.MouseLeftButtonUp += function(sender, args) { sender.FontSize *= 2; sender.Opacity /= 2; HtmlPage.Window.Alert(util); }
app.xaml
<UserControl xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="System.Windows.Controls.UserControl" x:Name="Page"> <Canvas x:Name="LayoutRoot"> <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Foreground="Black" Text="Click Me." /> </Canvas> </UserControl>
lib.js
function hoge() { return "hoge"; }
で、実行してみた
beta 2 SDK、Silverlight Dynamic Language SDK beta2 のどっちのchironで実行してみても、同じ結果になってしまう。
- LoadModule だと FileIOException
- LoadModuleFromFile だと Null が帰ってくる
ダメっぽい事をやってる可能性があるところ
- LoadModule の使い方をそもそも間違えてる?
- lib.jsを配置するパスが違っている?
- Silverlight Dynamic Language SDK beta2 をもともとのSDKの方に上書きとかしてないんだけど、それがダメ?