最近做一个项目,经理要去发布后要只有一个dll所以就用了WebDeployment Project插件,完了之后编译就报了错误“aspnet_merge.exe”已退出,代码为 1。最后找了半天原因才发现是这句代码的问题:ConfigurationManager.ConnectionStrings["conn"].ConnectionString;(我又重新建了个网站只写了这个就报错,注释掉就ok)。
不要说什么类重名的问题(只有一个页面),命名空间的问题(手动加了命名空间的)。
搞了一天了实在是不知道原因,望有经验的帮忙下。
报错的详细信息是:------ 已启动全部重新生成: 项目: http://localhost/test2/, 配置: Debug .NET ------
正在验证网站
正在生成目录“/test2/”。验证完成
------ 已启动全部重新生成: 项目: test2_deploy, 配置: Debug Any CPU ------
生成启动时间 2011-2-16 17:24:20。
目标 Clean:
  任务“CreateProperty”
  已完成执行任务“CreateProperty”。
目标 _PrepareForBuild:
  任务“CreateProperty”
  已完成执行任务“CreateProperty”。
  任务“CreateProperty”
  已完成执行任务“CreateProperty”。
目标“_SplitProjectReferencesByType”因出现错误条件而被跳过;('@(ProjectReference)'!='')被作为(''!='')计算。
已跳过目标“_PrepareForBuild”。以前的生成成功。
目标 GetFrameworkPathAndRedistList:
  任务“GetFrameworkPath”
  已完成执行任务“GetFrameworkPath”。
  任务“CreateItem”
  已完成执行任务“CreateItem”。
目标 _ResolveReferences:
  任务“CreateItem”
  已完成执行任务“CreateItem”。
  任务“ReadLinesFromFile”因出现错误条件而被跳过;( '%(References_RefreshFile.Identity)' != '' )被作为( '' != '' )计算。
  任务“CombinePath”
  已完成执行任务“CombinePath”。
  任务“Copy”
  已完成执行任务“Copy”。
  任务“ResolveAssemblyReference”因出现错误条件而被跳过;(Exists('%(References.Identity)'))被作为(Exists(''))计算。
  任务“Copy”
  已完成执行任务“Copy”。
目标“_ResolveProjectReferences”因出现错误条件而被跳过;('@(NonVCProjectReference)'!='')被作为(''!='')计算。
目标“ResolveAssemblyReferences”因出现错误条件而被跳过;('@(Reference)'!='' or '@(_ResolvedProjectReferencePaths)'!='')被作为(''!='' or ''!='')计算。
目标“_CopyBeforeBuild”因出现错误条件而被跳过;( '$(EnableCopyBeforeBuild)' == 'true' or '@(ExcludeFromBuild)' != ''  )被作为( '' == 'true' or '' != ''  )计算。
目标 BeforeBuild:
已跳过目标“_PrepareForBuild”。以前的生成成功。
目标 AspNetCompiler:
  任务“AspNetCompiler”
    
    命令:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /test2 -p E:\WebPublish\test\test2 -u -f -c -d E:\WebPublish\test\test2Publish\test2_deploy\Debug\ 
    任务“AspNetCompiler”正在使用“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe”中的“aspnet_compiler.exe”。
    要用来预编译 ASP.NET 应用程序的实用工具
    版权所有(C) Microsoft Corporation。保留所有权利。
    
    
  已完成执行任务“AspNetCompiler”。
  任务“ToggleDebugCompilation”
    Updateing web.config compilation debug = 'True' ...
    Successfully updated web.config compilation debug = 'True' ...
  已完成执行任务“ToggleDebugCompilation”。
  任务“RemoveDir”
    目录“E:\WebPublish\test\test2Publish\test2_deploy\Debug\\App_Data”不存在。正在跳过。
  已完成执行任务“RemoveDir”。
  任务“CreateItem”因出现错误条件而被跳过;('$(UseMerge)' != 'true')被作为('true' != 'true')计算。
目标 BeforeMerge:
已跳过目标“_PrepareForBuild”。以前的生成成功。
已跳过目标“AspNetCompiler”。以前的生成成功。
目标“GenerateAssemblyInfo”因出现错误条件而被跳过;( '@(AssemblyAttributes)' != '' )被作为( '' != '' )计算。
目标 AspNetMerge:
  任务“AspNetMerge”
    Running aspnet_merge.exe ...
    命令:
    C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe E:\WebPublish\test\test2Publish\test2_deploy\Debug -o test2_deploy -debug -r -copyattrs 
    任务“AspNetMerge”正在使用“C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe”中的“aspnet_merge.exe”。
    Utility to merge precompiled ASP.NET assemblies.
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    An error occurred when merging assemblies: Unresolved assembly reference not allowed: System.Configuration.
    C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\Microsoft.WebDeployment.targets(574,9): error MSB6006: “aspnet_merge.exe”已退出,代码为 1。
  已完成执行任务“AspNetMerge”-- 失败。
已完成在项目“test2_deploy.wdproj”中生成目标“AspNetMerge”-- 失败。已完成生成项目“test2_deploy.wdproj”-- 失败。生成失败。已用时间 00:00:05.21
========== 全部重新生成: 1 已成功, 1 已失败, 0 已跳过 ==========

解决方案 »

  1.   

    检查程序,是否有相关配置
    Asp.net发布网站
      

  2.   

    ConfigurationManager.ConnectionStrings["conn"].ConnectionString
    你可以改成
    <appSettings>
    <add key="conn" value="xxxxxxxxxxxxxxx"/>
    </appSettings>
    System.Configuration.ConfigurationManager.AppSettings["conn"].ToString();
    的格式进行测试
      

  3.   

    另外,读取配置文件的方法还有很多,可以尝试下。Web Deployment Projects版本有2个,可以下载支持中文好的版本http://blog.csdn.net/net_lover/archive/2006/10/02/1317315.aspx
      

  4.   

    另外可以Release模式,而不是Debug
    模式进行编译
      

  5.   


    现在好了,换了个vs版本,以前是team版的,换了个开发版的就好了。