Visual Studio 常見問題及解決方案(持續更新)


1. “ sgen.exe ”已退出,代碼為 1

解決方案:選定web項目,右鍵選擇“屬性”—“生成”,將“生成序列化程序集”設成“關閉”。若你使用的是Visual Studio 2012,請在“標准”工具欄將“解決方案配置”設置為 Release 模式(Visual Studio 2012 默認使用 Release 模式發布 Web 應用),然后再進行上述操作即可。

2.“混合模式程序集是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中加載該程序集
      異常原因:項目中調用的 SQLite 驅動(System.Data.Sqlite.dll,版本號:1.0.66.0)是針對.NET2.0環境開發的
      解決方案:在項目的 app.config 中添加如下配置節:

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

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

     啟用 .NET Framework 2.0 版 運行時激活策略,這是通過使用最新支持的運行時加載所有程序集。

注意:由於config配置文件的特性,如果在config配置文件中存在configSections節點,則必須將configSections作為第一上配置項,否則會引發異常:配置系統未能初始化。

在原來.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 版本所創建的程序集。

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

有關更多startup及其子級可以查看MSDN:

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

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


免責聲明!

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



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