“aspnet_merge.exe”已退出,代碼為1的錯誤的解決方案

來源:互聯網
上載者:User

FROM :

http://hi.baidu.com/2hill/blog/item/f9f1e41cb2d4be8887d6b69a.html

 

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的錯誤”了吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.