System.IO.FileLoadException

SQLiteをデータベースとして使用してC#でプログラムを書いていると、初回実行時にSystem.IO.FileLoadExceptionがスローされてしまう。

image 

いつも忘れてしまうのですが、App.configに以下の内容を追加すれば例外は発生しなくなります。

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>

</configuration>

この中で、startup要素にあるuseLegacyV2RuntimeActivationPolicy属性についてはMSDNに詳細がありますが、正直どういう意味なのかわかりませんでした。

いろいろ調べたところ、Life like a clownに詳しく説明があり参考にさせていただいたきました。上記のuseLegacyV2RuntimeActivationPolicy属性の説明ではなく、supportedRuntime要素の説明で詳細が明確になります。

.NET Framework Version 1.1 または .NET Framework Version 2.0 で作成されたアプリケーションまたはコンポーネントを .NET Framework Version 4 で実行するには、サポートされるランタイムのリストで .NET Framework 4 を指定するだけでは不十分です。さらに、構成ファイル内の <startup> 要素で、useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります。設定しない場合、サポートされるランタイムのリストで、.NET Framework 4 よりも低いバージョンの .NET Framework のうち最上位バージョンが検索されます。.NET Framework 4 がリストにある唯一のランタイムである場合、読み込みは失敗します。

 

ということから、上記設定が必要となるのですね。