天天看點

【轉】“aspnet_merge.exe”已退出,代碼為 1的錯誤

今天編譯Main Project的時候突然出現error MSB6006: "aspnet_merge.exe" exited with code 1的錯誤。上周五的時候還是好的。這問題隻會出現在Web Deployment Project的build中。 幸虧開發上個産品的時候也出現過類似問題,粗看起來似乎錯誤資訊很模糊,很難判斷具體的錯誤原因。但是MSBuild提供了/verbosity 的參數,可以指定編譯時輸出的資訊的詳細程度。verbosity的參數定義如下,預設為normal,我們隻需要detailed就可以看到所需資訊了。 /verbosity:<level> Display this amount of information in the event log.

                   The available verbosity levels are: q[uiet], m[inimal],

                   n[ormal], d[etailed], and diag[nostic]. (Short form: /v) 解決方式如下: 從Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt進入指令行方式,找到要編譯的Web Deployment Project目錄,确認存在要編譯的.wdproj之後,運作msbuild /v:d ,這樣就會把編譯過程過程中的詳細資訊都會顯示出來。 比如今天我遇到的錯誤資訊是這樣的:       An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type 'DefaultTemplate_Userbar_Newbie' found in assembly 'App_Web_djvh7xdf'.

      C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\Microsoft.WebDeployment.targets(574,9): error MSB6006: "aspnet_merge.exe" exited with code 1. 而如果不指定/v:d,則隻有第二行資訊。 根據第一行的錯誤資訊,可以得知是由于project中存在兩個相同的類定義(這裡是DefaultTemplate_Userbar_Newbie)所引起的,這個錯誤隻有在把所有code merge一個dll中才會暴露出來,平時是可以正常運作的。這個錯誤一般情況是下是由于開發人員采用複制aspx, ascx頁面的方式而又沒有更改新的頁面的類定義導緻的,隻要在project中serach一把沖突的類名(DefaultTemplate_Userbar_Newbie)就能輕易找到,改正後就可通過編譯。

原文: http://www.cnblogs.com/zsm/archive/2008/11/20/1337667.html

轉載于:https://www.cnblogs.com/WilliamsQi/articles/1576263.html