這篇文章給大家分享的是有關(guān).net framework 4.0環(huán)境下遇到版本不同編譯不通過(guò)怎么辦的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、豐都網(wǎng)站維護(hù)、網(wǎng)站推廣。最近部門(mén)的開(kāi)發(fā)環(huán)境都更新到了WIN7+.NET framework4+VS2010上,在體驗(yàn)新技術(shù)和新環(huán)境帶給我們提高效率的方式方法的同時(shí)也帶來(lái)了一些兼容性的問(wèn)題;這幾天項(xiàng)目閑暇時(shí)在研究SQLite,在做實(shí)驗(yàn)的時(shí)候碰到個(gè)問(wèn)題,代碼編譯通過(guò)執(zhí)行時(shí)反復(fù)異常中斷,查到后面原來(lái)是SQLite.dll是在framework2.0環(huán)境下編譯的而現(xiàn)在的運(yùn)行環(huán)境是framework4.0,所以就出現(xiàn)了運(yùn)行異常,如圖:
由于以后的開(kāi)發(fā)過(guò)程中,可能會(huì)引用一些第三方的組件,有可能是老的framework版本下編譯的,同樣會(huì)出現(xiàn)此類的問(wèn)題,所以在本文中提供一個(gè)解決辦法和說(shuō)明造成此問(wèn)題的原因。
查閱了相關(guān)資料,stackoverflow.com上建議在config文件中增加配置:
復(fù)制代碼 代碼如下:
MSDN上也對(duì)此方法進(jìn)行了闡述,參見(jiàn)http://msdn.microsoft.com/en-us/library/bbx34a2h(VS.100).aspx
但是使用此方法編譯后問(wèn)題仍然沒(méi)有解決,但是問(wèn)題可以明確鎖定為.net runtime環(huán)境的問(wèn)題了。
復(fù)制代碼 代碼如下:
再次運(yùn)行,問(wèn)題解決。這下需要了解是什么原因造成的?
supportedRuntime標(biāo)簽用來(lái) 具體說(shuō)明應(yīng)用程序支持的是哪個(gè).framework運(yùn)行時(shí)的版本;
requiredRuntime標(biāo)簽用來(lái) 具體說(shuō)明應(yīng)用程序只支持1.0版本的公用語(yǔ)言運(yùn)行時(shí)間。如果使用1.1版本或者后面的版本來(lái)編譯,應(yīng)用程序必須使用
注意:
再次查閱CLR Runtime版本的相關(guān)資料,引用以下CLR運(yùn)行規(guī)則和各版本間關(guān)系匯總表格,如下:
規(guī)則:
1. CLR4.0及以上版本編譯的應(yīng)用程序總是運(yùn)行在應(yīng)用程序所被編譯的CLR版本上;
2. CLR4.0以下版本編譯的應(yīng)用程序優(yōu)先運(yùn)行在被編譯的CLR版本上,如果此版本不存在,則運(yùn)行新的小于CLR4.0的版本;
匯總?cè)缦拢?/strong>
EXE被編譯的CLR版本號(hào) | 機(jī)器上安裝有CLR 1.1? | 機(jī)器上安裝有CLR 2.0? | 機(jī)器上安裝有CLR 4.0? | 結(jié)果 |
1.1 | 是 | 無(wú)所謂 | 無(wú)所謂 | 加載CLR 1.1 |
2.0 | 無(wú)所謂 | 是 | 無(wú)所謂 | 加載CLR 2.0 |
1.1 | 否 | 是 | 無(wú)所謂 | 加載CLR 2.0 |
1.1 | 否 | 否 | 是 | 失敗 |
2.0 | 無(wú)所謂 | 否 | 是 | 失敗 |
感謝各位的閱讀!關(guān)于“.net framework 4.0環(huán)境下遇到版本不同編譯不通過(guò)怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!