一、混合模式程序集是針對「v2.0.50727」版的運行時生成的,在沒有配置其餘信息的狀況下,沒法在 4.0 運行時中加載該程序集sql
其調用的方法是從sqlite數據庫中獲取原來已經使用過的數據庫鏈接,當時也沒注意,就是準備設斷點而後單步調試,結果居然是斷點沒法進入方法體內,後來仔細看了一下方法體的時候發現了一個問題,就是現有的 System.Data.Sqlite這個數據訪問provider是針對.NET2.0環境開發(最新的版本是1.0.66.0,2010年4月18日發佈的),而目前官方也沒有給出最新的.NET4的數據訪問支持。數據庫
解決方法:app
在app.config中添加一個配置節:startupide
<
startup
useLegacyV2RuntimeActivationPolicy
=
"true"
>
調試
<
supportedRuntime
version
=
"v4.0"
/>
code
</
startup
>
sqlite
這段配置節的意思是(參考自MSDN,具體地址:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx):xml
在原來.NET2.0,.NET3.5的時候,因爲程序運行環境本質仍是.NET2.0,而到了.NET4.0因爲整個程序集的版本更新,之前使用.NET2.0所編寫的程序集與.NET4.0的程序集繼續擰互操做的時候就會出現上面所說的兼容性問題。 經過MSDN,咱們能夠知道,startup配置節中的useLegacyV2RuntimeActivationPolicy屬性是在.NET4.0中新增的,默認是false,表示:開發
使用默認的 .NET Framework 4 激活策略,該激活策略將加載 .NET Framework 4 經過使用公共語言運行時 (CLR) 版本 4 所建立的程序集,以及 CLR 早期版本經過使用受支持的低於版本 4 的最高 CLR 版本所建立的程序集。 string
如今若是當程序在.NET4.0環境下要使用.NET2.0及.NET3.5的程序時就必須將useLegacyV2RuntimeActivationPolicy設置爲true,同時還要注意,須要在startup配置節的字節中添加supportedRuntime配置節,並指定爲「v4.0」,表示使用.NET4.0運行時來運行程序。