“aspnet_merge.exe已退出,代码为1”的错误解决方法

本文解决了一个在使用WebDeploymentProjects工具时遇到的aspnet_merge.exe已退出,代码为1的问题。原因是项目中有两个相同名称的默认文件,默认情况下VS2005会忽略命名空间,导致合并时发生冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      由于vs2005 发布网站的话,每次生成的dll 文件都不一样,所以,一直都是在用 WebDeployment Project  这个插件发布网站的。
一直以来都没有出现什么问题,不想今天在发布的时候却一直出现 "aspnet_merge.exe已退出,代码为1" 这样的错误提示。
而用常规方式发布网站却没有问题。。真是奇怪了。。。

      在网上看到有位仁兄也遇到这样的问题。看了他的文章才知道。原来,是我的项目里面有两个default 的文件,虽然在不同的目录,但是发布的时候却不行。最后删掉其中一个default.aspx,就OK了。

 

原文如下:
----------------------------------------------------------------------------------

使用Web Deployment Projects工具生成唯一程序集时出现了错误信息“Aspnet_merge.exe Exited with Code 1”(Aspnet_merge.exe 退出,错误代码1),这样的信息根本无法让我们办断到底是哪里出了问题。好,下面依次打开VS 2005的工具-选项-项目和解决方案-生成并运行,设置“MSBuild 项目生成输出详细信息”,选择“详细”。再次生成Web Deployment Projects项目,注意“输出”框内的信息现在变得非常丰富了,最后导致无法编译的问题终于出来了“An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type ‘_Default’ found in assembly 'App_Web_k5hhsnh0'”,它的意思是说在程序集中发现了相同的类型_Default,经过我检查确实在我们的WEB项目中存在了两个_Default类(在不同的目录中或者是ascx和aspx的同名文件),这样的问题通过一般的生成完成和发布网站肯定都是检测不出来的,运行也是正常的。VS 2005的WEB项目默认的把命名空间给去掉了,可以手动增加一个命名空间,cs代码中加入namespace的语句块,另外别忘了在aspx文件的<@page>的Inherits中写入对应的[namespace].[类名];经过这样的操作再次编译成一个程序集就没有问题了(备注:这个项目前后一共发现了5对类名称一致的情况,加上命名空间或是改名称就可以解决了)。
----------------------------------------------------------------------------------

 

相关文章:

http://www.cnblogs.com/SAL2928/archive/2007/05/29/763185.html 

http://blog.youkuaiyun.com/yangyifan0/archive/2008/01/08/2029797.aspx

http://www.itqun.net/content-detail/92439.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值