混合模式程序集是針對「v2.0.50727」版的運行時生成的,在沒有配置其餘信息的狀況下,沒法在 4.0 運行時中加載該程序集

解決方案,在app.config中添加一個配置節:startupapp

  1 <?xml version="1.0"?>
  2 <configuration>
  3   <startup useLegacyV2RuntimeActivationPolicy="true">
  4     <supportedRuntime version="v4.0" sku = ".NETFramework,Version=v4.0"/>
  5     <supportedRuntime version="v2.0.50727"/>
  6   </startup>
  7 </configuration>
View Code

這段配置節的意思是(參考自MSDN,具體地址:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx):ide

啓用 .NET Framework 2.0 版 運行時激活策略,這是經過使用最新支持的運行時加載全部程序集。spa

注意:因爲config配置文件的特性,若是在config配置文件中存在configSections節點,則必須將configSections放在一個,不然會引起異常:配置系統未能初始化code

在原來.NET2.0,.NET3.5的時候,因爲程序運行環境本質仍是.NET2.0,而到了.NET4.0因爲整個程序集的版本更新,之前使用.NET2.0所編寫的程序集與.NET4.0的程序集繼續擰互操做的時候就會出現上面所說的兼容性問題。xml

經過MSDN,咱們能夠知道,startup配置節中的useLegacyV2RuntimeActivationPolicy屬性是在.NET4.0中新增的,默認是false,表示:blog

使用默認的 .NET Framework 4 激活策略,該激活策略將加載 .NET Framework 4 經過使用公共語言運行時 (CLR) 版本 4 所建立的程序集,以及 CLR 早期版本經過使用受支持的低於版本 4 的最高 CLR 版本所建立的程序集。get

如今若是當程序在.NET4.0環境下要使用.NET2.0及.NET3.5的程序時就必須將useLegacyV2RuntimeActivationPolicy設置爲true,同時還要注意,須要在startup配置節的字節中添加supportedRuntime配置節,並指定爲「v4.0」,表示使用.NET4.0運行時來運行程序。io

有關更多startup及其子級能夠查看MSDN:event

startup:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspxclass

supportedRuntime:http://msdn.microsoft.com/zh-cn/library/w4atty68.aspx

相關文章
相關標籤/搜索