たきるブログ

C#やOracleなどの情報を書いています。

【C#】app.configで読み込むDLLを決定する方法

すぐ分からなくなって調べることになるからメモで残しておこう。
指定することで、exe直下以外のDLLも読める。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!-- DLLの読込位置 -->
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
          <codeBase version="1.0.66.0" href="./lib/System.Data.SQLite.dll"/>
        </dependentAssembly>
      </assemblyBinding>
    </runtime>

    <!-- DBプロバイダ定義 -->
    <system.data>
      <DbProviderFactories>
        <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
      </DbProviderFactories>
    </system.data>
</configuration>

上の例だと、./lib/System.Data.SQLite.dllを読み込んだ上で、DBプロバイダとして利用することが可能になってる。
runtime要素部分を書かないと、DBプロバイダ、つまりアセンブリ情報に該当するSystem.Data.SQLite.dllファイルの位置はexe直下で、勝手にアセンブリが読み込まれる。