mkbundle

mkbundleのwin32版パッチがメーリングリストに流れていたので当てて見ました。ウチで動作させるにはちょっと修正が必要でして、

  static void QueueAssembly (ArrayList files, string codebase)
  {
    string codebase_ = codebase.Replace("\\", "/");
    if (files.Contains (codebase_))
      return;

    files.Add (codebase_);
    Assembly a = Assembly.LoadFrom (new Uri(codebase_).LocalPath);

    if (!autodeps)
      return;
    
    foreach (AssemblyName an in a.GetReferencedAssemblies ()) {
      a = Assembly.Load (an);
      QueueAssembly (files, a.CodeBase);
    }
  }

上記のように\を/に変換しないとUriクラスが例外を投げます。取りあえず、mkbundleが動くようになったのですが、使い方がよく分からなかったりして。(^^;
予想では.NETのアセンブリに必要なランタイムなどを全部かき集めてきて、stubモジュール叩けば動作するようになると思っていたのですが、mono-1.dllが必要だったり、mono-1.dllも色々dllをインポートしていたりと、変換したアセンブリをそのまま配布出来るものでは無いようです。