溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VS2003和VS2005的區(qū)別是什么

發(fā)布時(shí)間:2021-06-18 09:50:43 來源:億速云 閱讀:208 作者:chen 欄目:編程語(yǔ)言

這篇文章主要介紹“VS2003和VS2005的區(qū)別是什么”,在日常操作中,相信很多人在VS2003和VS2005的區(qū)別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”VS2003和VS2005的區(qū)別是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

目前在用VS2005寫asp.net程序,發(fā)布時(shí)遇到很多麻煩,覺得和VS2003發(fā)布有好多差別,以前還一直抱怨Boland的Delphi 2005難用,很喜歡VS2005呢,現(xiàn)在覺得VS2005也有很多不盡人意的地方。下面就拿VS2003發(fā)布出來給大家探討下

早知道當(dāng)初還選擇dotnet1.1了,現(xiàn)在用VS2005+dotnet2.0,發(fā)布時(shí)真是多花了好多力氣,且聽一一道來。

首先,一開始我還以為VS2005和VS2003一樣,可是無(wú)論我怎樣點(diǎn)擊生成網(wǎng)站卻始終找不到生成的dll,后來才知道,要用發(fā)布網(wǎng)站才可以的。可是對(duì)于一個(gè)web應(yīng)用程序進(jìn)行發(fā)布時(shí),VS2005卻生成了多個(gè)由隨機(jī)字符命名的dll文件,看上去就很難受,而其管理維護(hù)起來十分不方便,更讓人不能接受的是在發(fā)布webservice 的時(shí)候,對(duì)于每一個(gè)webservice網(wǎng)站應(yīng)用程序VS2005生成一個(gè)名為App_Code.dll 的文件,找不到可以修改生成文件名的地方。

無(wú)奈之中,只好上網(wǎng)找資料。后來了解到WebDeployment  (點(diǎn)擊這里進(jìn)入WebDeployment下載頁(yè)面)這個(gè)小插件可以解決上述問題,于是就下載來看看。是e文的,用起來不是很方便,但確實(shí)可以解決問題。

有關(guān)WebDeployment的參考請(qǐng)查閱一下網(wǎng)址

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/web_deployment_projects.asp

http://msdn.microsoft.com/asp.net/reference/infrastructure/wdp/default.aspx

可我在使用過程中又發(fā)現(xiàn)許多新的問題,WebDeployment用起來十分不穩(wěn)定,會(huì)莫名其妙的出現(xiàn)錯(cuò)誤,同樣的代碼有時(shí)能通過編譯有時(shí)不能,錯(cuò)誤提示十分含糊籠統(tǒng),總是提示:

錯(cuò)誤1     “aspnet_merge.exe”已退出,代碼為 1。

而且這些代碼在不使用WebDeployment  的時(shí)候都很正常,都能編譯通過。

相信許多朋友都遇到過這種問題,實(shí)在讓人迷茫阿,于是筆者自己手用命令行動(dòng)執(zhí)行aspnet_merge.exe      對(duì)dll進(jìn)行管理合并。

得到以下信息:

Utility to merge precompiled ASP.NET assemblies.
Copyright (c) Microsoft Corporation. All rights reserved.
An error occurred when merging assemblies: 索引超出了數(shù)組界限。

IMG alt="" src="https://cache.yisu.com/upload/information/20210607/332/4413.gif" width=550>

怎么會(huì)有數(shù)組越界錯(cuò)誤,讓人迷茫,于是又上網(wǎng)查資料,有人遇到同樣的問題,可是沒人知道是什么問題。筆者這時(shí)又查到另外一個(gè)卡一對(duì).net assembly 進(jìn)行管理的工具 ILMerge.exe 有關(guān)ILMerge.exe 的參考請(qǐng)瀏覽以下網(wǎng)址

http://research.microsoft.com/%7Embarnett/ilmerge.aspx

它目前支持.net1.1和2.0,可以把多個(gè).net assembly合并成一個(gè),筆者在想可不可以用它對(duì)VS2005生成的dll進(jìn)行合并,于是下載了ILMerge.exe試試看,他只支持命令行方式,有點(diǎn)麻煩,我還是按幫助試試看了,結(jié)果是讓人失望的,在我對(duì)aspnet_merge.exe 無(wú)法合并的dll進(jìn)行合并時(shí),出現(xiàn)同樣的錯(cuò)誤An error occurred when merging assemblies: 索引超出了數(shù)組界限。極度迷?!?,該怎么辦呢?問題沒有解決,不能放棄。于是筆者把自己寫的程序代碼全都注釋掉,一點(diǎn)一點(diǎn)放開,慢慢尋找問題所在。

終于,讓我找到了我的程序的“bug”(其實(shí)不能稱作為我的bug,因?yàn)樗赩S2005和.net2.0中都能正確執(zhí)行只是進(jìn)行合并時(shí)有問題)我寫了一個(gè)webservice,可以通過編譯同過WebDeployment生成也沒為題,

指定服務(wù)說明

[WebMethod(Description ="")]

仍然沒有問題

改為:

[WebMethod(Description ="sdfdfsdfsdfsdfsdfsfsf")] 即Description = 英文字符串

仍然沒有問題

改為:

[WebMethod(Description ="包括漢子的字符串..SSSsds ")],即Description =包括漢子的字符串

問題出現(xiàn)了

當(dāng)Description包含漢子時(shí)候,對(duì)于WebDeployment而言根據(jù)字符的長(zhǎng)度不同和字符中英文字母的個(gè)數(shù)不同,有時(shí)候會(huì)出錯(cuò),有時(shí)候不會(huì)出錯(cuò)。

看來是WebDeployment,ILMerge本身有一定的bug,筆者猜想可能是編碼問題造成的,WebDeployment,ILMerge都是英文版的,也許是在計(jì)算字符串長(zhǎng)度時(shí)由于漢子和英文字母不同,而造成的錯(cuò)誤吧,這只是我的猜想,大家僅作參考。

經(jīng)過反復(fù)試驗(yàn),筆者找到了一種不是辦法的辦法,就是在字符串后邊狂加 空格由于筆者的WebMethod Description 在web上輸出,因此***多些空格不太影響效果。暫且這樣解決巴。無(wú)奈啊。

希望我的一點(diǎn)經(jīng)驗(yàn)?zāi)芙o大家?guī)韼椭?,?dǎo)致WebDeployment出錯(cuò)的原因也許還有很多,不過在你遇到錯(cuò)誤時(shí),可以先檢查一下你程序中的字符串,暫時(shí)把他們置為””,試試看。沒準(zhǔn)就是他引起的問題啊。

到此,關(guān)于“VS2003和VS2005的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI