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


場景

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

問題

一般情況下,會報出如下錯誤

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

解決

文檔參考

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

簡單來說

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

一般來說,程序配置文件在項目根目錄中,名為 “app.config” 。 默認內容如下:

<?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”配置文件修改為:

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

即可在程序中引用目標框架 為 .NET Framework 2.0 的程序集。

發布事項

當程序 Release 之后,在 Release 文件夾中會同時生成 “xxx.exe.config” 文件,此文件就是程序的配置文件。假如你沒有使用默認配置,那么在發布時,此文件應隨可執行程序一同發布,且保持在同一文件夾中。否則,程序將會使用默認配置。

其他

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM