aspnet_merge.exe”已退出,代碼爲1的錯誤的解決方法

aspnet_merge.exe”已退出,代碼爲1的錯誤的解決方法有一點很重要``那就是詳細的輸出信息只能在輸出欄中查看``而不是錯誤信息欄

VS2005發佈網站時不會像VS2003一樣生成規則的DLL文件、而生成的DLL文件名含有隨機數且不能一個項目生成一個DLL文件。

所以,每次網站改動了,一發布,就要全站上傳,很不習慣,很不爽;

爲了做到像vs2003一樣,聽說微軟發佈了WebDeployment Project插件可解決此問題,就搞了一個;安裝很簡單。

下載網址:
http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a0e/WebDeploymentSetup.msi

但是發佈時老是報出
"aspnet_merge.exe”已退出,代碼爲1的錯誤
而且發佈的DLL並沒有合成一個,還是像以前一樣,一大堆;

去網上查了一下,有的說是中文編碼問題,有的說是數組索引超出限制等;沒辦法啊,自己解決吧,但是這錯誤從哪裏找起啊;

還好,看網上有人說,將VS 2005的工具-選項-項目和解決方案-生成並運行,設置“MSBuild 項目生成輸出詳細信息”,選擇“詳細”。再次生成Web Deployment Projects項目,“輸出”框內的信息就變得非常豐富了;這樣就可以查看哪裏出錯了;

果然,再次發佈,錯誤停在了
An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type ‘web_left’ found in assembly 'App_Web_k7ytr'

它的意思是說web_left的類,已經存在了,我去項目裏搜索這個字符串,果然,出現了四次;兩次是在cs文件中的class定義處,另兩處自然是頁面的inherits調用處;

不用說,這是某個程序員在複製頁面時,沒有做任何改動,連cs引用也沒有改;我馬上改了,再次生成;

又停了下來,提示與前面一樣,只是類名不同罷了,看來同樣的錯誤有很多,唉,只好再改,然後再生成,根據提示,找到錯誤處,再改;生成是好慢的,搞了一個下午,全改完了;

最終,生成成功!呵呵;所有的cs生成的dll合成了一個dll;

在頁面的頭部,cs引用處,變成了
<%@ page language="C#" autoeventwireup="true" inherits="web_GovOpen_Article, BuilderWeb" enableEventValidation="false" viewStateEncryptionMode="Never" %>
注意,inherits處,引用的dll名稱,不再帶有隨機數了;

再說些其它的,在VS2005的“輸出”窗口中,還看了這樣的信息
命令:
         C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /webSite -p "D:\項目二期\webSite" -u -f -d "D:\項目二期\BuilderWeb\webRoot\\"
         任務“AspNetCompiler”正在使用“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe”中的“aspnet_compiler.exe”。

挺熟悉的,原來它是用aspnet_compiler.exe來生成的,當初自己還用它的命令行形式自己搞過呢;

再看後面
Running aspnet_merge.exe ...
         命令:
         C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe "D:\項目二期\BuilderWeb\webRoot" -o BuilderWeb -debug -copyattrs
         任務“AspNetMerge”正在使用“C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe”中的“aspnet_merge.exe”。

不用問,aspnet_merge.exe的功能是合併dll文件了;

正是因爲aspx引用的cs文檔中的類重名,所以在合併時纔會報錯,以前是分開在不同的dll中的,重名問題沒有暴露出來,合併了就出問題了;

現在可以明白這個“代碼爲1的錯誤”了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章