在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集

場景

在 目標框架 爲 .NET Framework 4 的程序中,引用 目標框架 爲 .NET Framework 2.0 的程序集,並使用 .NET Framework 2.0 程序集中的類型或者靜態方法。架構

問題

通常狀況下,會報出以下錯誤app

未經處理的異常: System.IO.FileLoadException: 混合模式程序集是針對「v2.0.50727」版的運行時生成的,在沒有配置其餘信息的狀況下,沒法在 4.0 運行時中加載該程序集。框架

解決

文檔參考

.NET Framework 的文檔配置文件架構 這一節對上述問題有解決方法。詳見 <startup> 元素 中關於 useLegacyV2RuntimeActivationPolicy 特性的描述。code

簡單來講

當你須要且不得不在 目標框架 爲 .NET Framework 4 的程序中,引用 目標框架 爲 .NET Framework 2.0 的程序集,那麼你應該修改程序配置文件。xml

通常來講,程序配置文件在項目根目錄中,名爲 「app.config」 。 默認內容以下:element

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

若是你項目中沒有的話,能夠手動添加,並在 「csproj」 文件中添加一條:文檔

<ItemGroup>
  <None Include="app.config" />
</ItemGroup>

根據 <startup> 元素 中的說法,你須要將「app.config」配置文件修改成:get

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

便可在程序中引用目標框架 爲 .NET Framework 2.0 的程序集。io

發佈事項

當程序 Release 以後,在 Release 文件夾中會同時生成 「xxx.exe.config」 文件,此文件就是程序的配置文件。假如你沒有使用默認配置,那麼在發佈時,此文件應隨可執行程序一同發佈,且保持在同一文件夾中。不然,程序將會使用默認配置。配置

其餘

關於程序的配置文件,更多詳細內容能夠參閱 .NET Framework 的配置文件架構

相關文章
相關標籤/搜索