読者です 読者をやめる 読者になる 読者になる

Silverlight 2 Beta 2 の Managed JScript で LoadModule が動かない?

Silverlight

追記:結果的に動くようになりました。
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 SDKSilverlight Dynamic Language SDK beta2 のどっちのchironで実行してみても、同じ結果になってしまう。

  • LoadModule だと FileIOException
  • LoadModuleFromFile だと Null が帰ってくる

ダメっぽい事をやってる可能性があるところ

  • LoadModule の使い方をそもそも間違えてる?
    • lib.jsを配置するパスが違っている?
  • Silverlight Dynamic Language SDK beta2 をもともとのSDKの方に上書きとかしてないんだけど、それがダメ?