【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直下で、勝手にアセンブリが読み込まれる。