看来是WebDeployment本身有一定的bug,笔者猜想可能是编码问题造成的,WebDeployment,ILMerge都是英文版的,也许是在计算字符串长度时由于汉子和英文字母不同,而造成的错误吧,这只是我的猜想,大家仅作参考。
最近用vs2005写asp.net程序,发布时遇到很多麻烦,觉得和VS2003有很多的不同,以前还一直抱怨Boland 的 Delphi 2005难用,满口称赞VS2005软件呢,现在觉得VS2005也有很多不尽人意的地方。
早知道当初还选择dotnet1.1了,现在用VS2005+dotnet2.0,发布时真是多花了好多力气,且听一一道来。
首先,一开始我还以为VS2005软件不能和VS2003软件一样,可是无论我怎样点击生成网站却始终找不到生成的dll,后来才知道,要用发布网站才可以的。
可是对于一个web应用程序进行发布时,VS2005软件却生成了多个由随机字符命名的dll文件,看上去就很难受,而其管理维护起来十分不方便,更让人不能接受的是在发布webservice 的时候,对于每一个webservice网站应用程序VS2005生成一个名为App_Code.dll 的文件,找不到可以修改生成文件名的地方。
无奈之中,只好上网找资料。后来了解到WebDeployment (点击这里进入WebDeployment下载页面)这个小插件可以解决上述问题,于是就下载来看看。是e文的,用起来不是很方便,但确实可以解决问题。
有关WebDeployment的参考请查阅一下网址
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
可我在使用过程中又发现许多新的问题,WebDeployment用起来十分不稳定,会莫名其妙的出现错误,同样的代码有时能通过编译有时不能,错误提示十分含糊笼统,总是提示:
#t#错误1 “aspnet_merge.exe”已退出,代码为 1。
而且这些代码在不使用WebDeployment 的时候都很正常,都能编译通过。
相信许多朋友都遇到过这种问题,实在让人迷茫阿,于是笔者自己手用命令行动执行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:
索引超出了数组界限。
VS2005软件有时候会出错,有时候不会出错。