越來越多的開發(fā)團(tuán)隊(duì)開始使用64位操作系統(tǒng)作為開發(fā)環(huán)境,也計(jì)劃將應(yīng)用部署在安裝有64位操作系統(tǒng)的服務(wù)器上。對(duì)于ASP.Net開發(fā)者來說,使用64位環(huán)境開發(fā)部署需要注意以下幾個(gè)問題,可在項(xiàng)目過程中節(jié)省不少時(shí)間。
很多開發(fā)者在使用64位操作系統(tǒng)時(shí),在ASP.Net應(yīng)用中使用了指定64位版本程序庫。例如一些專門的數(shù)據(jù)庫驅(qū)動(dòng)、設(shè)備驅(qū)動(dòng),但依然出現(xiàn)以下錯(cuò)誤提示信息:
1 | 未能加載文件或程序集“……”或它的某一個(gè)依賴項(xiàng),試圖加載格式不正確的程序。 |
造成這種故障的原因是,大部分ASP.Net編譯器和容器并沒有默認(rèn)設(shè)置為64位,而是以32位兼容模式運(yùn)行。此時(shí),如果將程序庫更換為32位,則系統(tǒng)運(yùn)行正常。若打算堅(jiān)持使用64位程序集,可依據(jù)下文所述方法進(jìn)行設(shè)置。
在64位操作系統(tǒng)中,Visual Studio自帶的IIS Express是32位的。如果需要Visual Studio使用IIS Express調(diào)試使用64位程序集的ASP.Net應(yīng)用,應(yīng)使用64位版本的IIS Express。設(shè)置方法如下:
(1)關(guān)閉正在運(yùn)行的IIS Express實(shí)例;
(2)單擊主菜單上的“工具”-“選項(xiàng)”命令,打開選項(xiàng)對(duì)話框;
(3)在選項(xiàng)對(duì)話框目錄樹中“項(xiàng)目和解決方案”-“Web項(xiàng)目”標(biāo)簽,勾選“對(duì)網(wǎng)站和項(xiàng)目使用IIS Express的64位版本”條目。
在Visual Studio發(fā)布ASP.Net項(xiàng)目時(shí),如果設(shè)置了在發(fā)布期間預(yù)編譯功能,Visual Studio將調(diào)用ASP.Net編譯器對(duì)項(xiàng)目進(jìn)行編譯。
該編譯器默認(rèn)選擇的是32位編譯器,而Visual Studio未提供任何配置管理界面。更換64位編譯器的方法為:
(1)找到當(dāng)前發(fā)布Web的配置文件名稱,本例中的文件名稱為PublishConfig;
(2)在解決方案資源管理器的Properies目錄下,找到對(duì)應(yīng)的配置文件,打開進(jìn)行編輯;
(3)在該配置文件中添加下列語句:
1 | [Microsoft .Net Framework路徑]\ Framework64\[版本號(hào)] |
例如:
1 | C:\Windows\Microsoft.NET\Framework64\v4. 0.30319 |
注意:Visual Studio 2010以前的版本配置方法有所不同,暫時(shí)未找到對(duì)應(yīng)解決方案,可選擇不進(jìn)行預(yù)編譯。
IIS可以針對(duì)具體的ASP.Net應(yīng)用設(shè)置是否以64位環(huán)境運(yùn)行,具體的操作方法如下:
(1)部署Web站點(diǎn)后,打開Internet 信息服務(wù)(IIS)管理器;
(2)在目錄中選擇應(yīng)用程序池,選擇目標(biāo)站點(diǎn)的應(yīng)用配置,通過右鍵菜單打開高級(jí)設(shè)置;
(3)將啟用32位應(yīng)用程序選項(xiàng)設(shè)置為False,應(yīng)用將以64位環(huán)境運(yùn)行。
關(guān)于此問題,我查閱過一些文檔,同時(shí)也進(jìn)行了實(shí)驗(yàn)。個(gè)人觀點(diǎn)如下:
(1)普通的ASP.Net項(xiàng)目無需進(jìn)行平臺(tái)的設(shè)置,平臺(tái)設(shè)置為x86和x64均不影響項(xiàng)目的編譯和發(fā)布,因此使用默認(rèn)的Any CPU平臺(tái)即可。
(2)對(duì)于使用了有環(huán)境限制程序集的項(xiàng)目,如系統(tǒng)驅(qū)動(dòng)、數(shù)據(jù)庫驅(qū)動(dòng),最好是配置對(duì)應(yīng)平臺(tái)。在發(fā)布時(shí)環(huán)境異常,可以獲取更多有效的信息,節(jié)省調(diào)試時(shí)間。
諸多開發(fā)者都對(duì)微軟的文檔不滿,軟件工程師與律師的職業(yè)屬性不同,每日不可能有諸多時(shí)間消耗在翻閱類似于法典的MSDN文檔中。而我們希望的是能夠針對(duì)可能出現(xiàn)問題的頻率來組織開發(fā)資料,這樣開發(fā)者將少走很多彎路。
源: http://www.2cto.com/kf/201407/313919.html
聯(lián)系客服