Épp WPF alól matatok SQLite adatbázist (majd a jövő csütörtöki Ethical Hacking Konferencián megmutatom, hogy miért ;-) ), ami tökéletesen működött is .NET 2.0 alatt, de mikor áttettem .NET 4 alá, az alábbi hibaüzenet köszöntött, ráadásul futási időben:
System.IO.FileLoadException was unhandled
Message=Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
A problémát nyilvánvalóan az okozta, hogy a netről letöltött System.Data.SQLite szerelvény még az előző framework verzióhoz készült. A mixed mode assembly egyébként olyan szerelvény, ami .NET-es és C++ kódot is tartalmaz. A hibaüzenetből kiderül, hogy valami konfigolni kell, ezért létrehoztam egy app.config fájlt az alábbi tartalommal és máris megoldódott a probléma:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
Hasonló előjöhet webes fejlesztésnél is, ott a WebDev.WebServer40.exe.config fájlt kell kiegészíteni a startup elemmel. A useLegacyV2RuntimeActivationPolicy-ről bővebben Mark Miller blogbejegyzésében lehet olvasni.