国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

解決.net framework 4.0環境下遇到版本不同編譯不通過的方法詳解

2024-07-10 12:45:30
字體:
來源:轉載
供稿:網友

本文內容:
1.問題引出
2.問題解決
3.原因分析 

最近部門的開發環境都更新到了WIN7+.NET framework4+VS2010上,在體驗新技術和新環境帶給我們提高效率的方式方法的同時也帶來了一些兼容性的問題;這幾天項目閑暇時在研究SQLite,在做實驗的時候碰到個問題,代碼編譯通過執行時反復異常中斷,查到后面原來是SQLite.dll是在framework2.0環境下編譯的而現在的運行環境是framework4.0,所以就出現了運行異常,如圖:
    

由于以后的開發過程中,可能會引用一些第三方的組件,有可能是老的framework版本下編譯的,同樣會出現此類的問題,所以在本文中提供一個解決辦法和說明造成此問題的原因。

查閱了相關資料,stackoverflow.com上建議在config文件中增加配置:
代碼如下:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>


MSDN上也對此方法進行了闡述,參見http://msdn.microsoft.com/en-us/library/bbx34a2h(VS.100).aspx

但是使用此方法編譯后問題仍然沒有解決,但是問題可以明確鎖定為.net runtime環境的問題了。
代碼如下:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<requiredRuntime version="v4.0.30319" />
</startup>

再次運行,問題解決。這下需要了解是什么原因造成的?
supportedRuntime標簽用來 具體說明應用程序支持的是哪個.framework運行時的版本;
requiredRuntime標簽用來 具體說明應用程序只支持1.0版本的公用語言運行時間。如果使用1.1版本或者后面的版本來編譯,應用程序必須使用<supportedRuntime>元素;
注意:
<supportedRuntime>必須通過1.1版本或后面的版本而編譯的應用程序來使用。只支持1.0版本的運行時間的應用程序必須使用<requiredRuntime>。

再次查閱CLR Runtime版本的相關資料,引用以下CLR運行規則和各版本間關系匯總表格,如下:
規則:
1. CLR4.0及以上版本編譯的應用程序總是運行在應用程序所被編譯的CLR版本上;
2. CLR4.0以下版本編譯的應用程序優先運行在被編譯的CLR版本上,如果此版本不存在,則運行最新的小于CLR4.0的版本;
匯總如下:

    <form id="8y1oq"><del id="8y1oq"></del></form>

      <pre id="8y1oq"></pre>

      EXE被編譯的CLR版本號

      機器上安裝有CLR 1.1?

      機器上安裝有CLR 2.0?

      機器上安裝有CLR 4.0?

      結果

      1.1

      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      主站蜘蛛池模板: 三台县| 始兴县| 林州市| 万载县| 佛冈县| 玉树县| 威海市| 澄城县| 江华| 乐都县| 庆云县| 城口县| 阳西县| 金乡县| 北海市| 嘉善县| 额敏县| 梧州市| 和田市| 五大连池市| 沁阳市| 夏河县| 科尔| 隆尧县| 夏津县| 宁波市| 苍溪县| 内乡县| 高邮市| 平山县| 石楼县| 密山市| 固阳县| 荔浦县| 河曲县| 贵阳市| 时尚| 建平县| 平阴县| 洛川县| 英山县|
      • <ruby id="8y1oq"><dfn id="8y1oq"></dfn></ruby>
        <rt id="8y1oq"></rt>
        1. <rt id="8y1oq"></rt>