本人對于VS2005軟件的理解與分析過程
看來是WebDeployment本身有一定的bug,筆者猜想可能是編碼問題造成的,WebDeployment,ILMerge都是英文版的,也許是在計算字符串長度時由于漢子和英文字母不同,而造成的錯誤吧,這只是我的猜想,大家僅作參考。
最近用vs2005寫asp.net程序,發(fā)布時遇到很多麻煩,覺得和VS2003有很多的不同,以前還一直抱怨Boland 的 Delphi 2005難用,滿口稱贊VS2005軟件呢,現(xiàn)在覺得VS2005也有很多不盡人意的地方。
早知道當初還選擇dotnet1.1了,現(xiàn)在用VS2005+dotnet2.0,發(fā)布時真是多花了好多力氣,且聽一一道來。
首先,一開始我還以為VS2005軟件不能和VS2003軟件一樣,可是無論我怎樣點擊生成網(wǎng)站卻始終找不到生成的dll,后來才知道,要用發(fā)布網(wǎng)站才可以的。
可是對于一個web應用程序進行發(fā)布時,VS2005軟件卻生成了多個由隨機字符命名的dll文件,看上去就很難受,而其管理維護起來十分不方便,更讓人不能接受的是在發(fā)布webservice 的時候,對于每一個webservice網(wǎng)站應用程序VS2005生成一個名為App_Code.dll 的文件,找不到可以修改生成文件名的地方。
無奈之中,只好上網(wǎng)找資料。后來了解到WebDeployment (點擊這里進入WebDeployment下載頁面)這個小插件可以解決上述問題,于是就下載來看看。是e文的,用起來不是很方便,但確實可以解決問題。
有關WebDeployment的參考請查閱一下網(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)定,會莫名其妙的出現(xiàn)錯誤,同樣的代碼有時能通過編譯有時不能,錯誤提示十分含糊籠統(tǒng),總是提示:
#t#錯誤1 “aspnet_merge.exe”已退出,代碼為 1。
而且這些代碼在不使用WebDeployment 的時候都很正常,都能編譯通過。
相信許多朋友都遇到過這種問題,實在讓人迷茫阿,于是筆者自己手用命令行動執(zhí)行aspnet_merge.exe 對dll進行管理合并。對vs2005得到以下信息
Utility to merge precompiled ASP.NET assemblies.
Copyright (c) Microsoft Corporation. All rights reserved.
An error occurred when merging assemblies:
索引超出了數(shù)組界限。
VS2005軟件有時候會出錯,有時候不會出錯。