SQLiteをデータベースとして使用してC#でプログラムを書いていると、初回実行時にSystem.IO.FileLoadExceptionがスローされてしまう。
いつも忘れてしまうのですが、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 がリストにある唯一のランタイムである場合、読み込みは失敗します。
ということから、上記設定が必要となるのですね。