[Seasar-s2dotnet 18] アセンブリの解決について

Kazuya Sugimoto sugimoto
2005年 7月 6日 (水) 19:02:10 JST


杉本と申します。

S2.NETのアセンブリ解決方法ですが、改善したいと思います。
皆様、ご意見よろしくお願いします。

現在のS2.NETでは、アセンブリをS2.NET内に保持し解決を行っています。
アセンブリをS2.NETに登録する場合は、
S2.NET.Framework.Container.S2AssemblyTable#AddAssembly(System.Reflection.Assembly)
を使用します。

また、S2.NET.Framework.Container.Factory.S2ContainerFactory#Create
呼び出し時に
    * S2.NETのアセンブリ
    * 既定のアプリケーションドメインで実行できるプロセスのアセンブリ [System
.Reflection.Assembly#GetEntryAssembly()]
    * S2.NET.Framework.Container.Factory.S2ContainerFactory#Createを呼び出し
たアセンブリ

を自動で登録するようになっています。

diconファイル(埋め込まれたリソース)読み込みと、
クラス名からTypeオブジェクトを作成するために、アセンブリが必要なので
こういったことになっているのですが、
そもそも、コンポーネントの定義で、
<component class="クラスの完全名, アセンブリ名" />
と書くようにすれば、アセンブリを事前に登録する必要は無いわけです。

ただ、class属性にアセンブリを毎回書くのも、しんどいなと思い
今のようにclass属性にアセンブリを書かなくても良いようになっています。
# side-by-side 実行することもあまり無いでしょうし。

しかし、S2.NETのメソッドを呼び出して登録するのは、いまいちだと思うので、
アプリケーション構成ファイルにアセンブリを定義しても良いかなと思います。

<configuration>
  <configSections>
    <section name="s2.net"
type="System.Configuration.NameValueSectionHandler, System,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
  </configSections>

  <s2.net>
    <!-- これはSingletonS2ContainerFactoryが使用するdiconファイルのパス -->
    <add key="configPath" value="WebApplication1/App.dicon" />
    <add key="assembly" value="WebApplication1" />
    <add key="assembly" value="TestLib, Version=x.x.x.x, Culture=neutral,
PublicKeyToken=xxx" />
  </s2.net>
</configuration>

ご意見、お聞かせ下さい。

-- 
Kazuya Sugimoto
http://kamedane.com/



seasar-dotnet メーリングリストの案内