Visual Studio 2005无法在发布配置模式下编译

3
SUMMARY: 如何在Release模式下编译...我无法得到我想要的结果。
我有一个在VS2005 C#中的webservice项目,我正在尝试对其进行优化。其中一个引起了我的注意的事情是建议在Release模式下编译。我不确定会发生什么,但这是我看到的:
我右键单击该项目并选择“属性”,然后选择“生成”选项卡 我点击配置下拉框,设置为RELEASE,注意输出路径为\bin 我重新构建该项目,DLL将进入\bin\debug文件夹(而不是\bin)! 以下是从该编译中复制的片段(请注意,它显示配置为“Debug Any CPU”,稍后为/define:DEBUG;TRACE):
------ Rebuild All started: Project: TRIMBrokerService, Configuration: Debug Any CPU ------
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE 
/reference:"C:\Program Files\Microsoft WSE\v3.0\Microsoft.Web.Services3.dll" /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Configuration.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Mobile.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:..\TRIMBrokerUtilities\TRIMBrokerUtil\bin\Debug\TRIMBrokerUtil.dll 
/debug+ /debug:full /optimize- /out:obj\Debug\TRIMBrokerService.dll /target:library FaultCode.cs FileService.asmx.cs Properties\AssemblyInfo.cs Properties\Settings.Designer.cs Settings.cs "Web References\ASMXwsTrim\Reference.cs"
编译完成--0个错误,0个警告 TRIMBrokerService -> C:\Documents and Settings\johna\My Documents\Visual Studio 2005\Projects\WSE\TRIMBrokerPassingByteArray\TRIMBroker\TRIMBrokerService\bin\debug\TRIMBrokerService.dll ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

我注意到,我可以与“生成”选项卡对话框进行交互,并且当我将配置下拉列表框更改为“Active(Debug)”或只是“Debug”时,输出路径会像预期的那样更改为\bin\debug,但我似乎无法在发布模式下进行编译。有什么窍门吗?我不想阅读MSBuild文档来部署我的小型Web服务,因为我认为这远远超出了我目前的需求。

4个回答

5

右键单击您的解决方案,选择配置管理器..确保"活动解决方案配置"设置为发布。然后确保下面网格中的项目设置为使用发布配置。

也许是意外更改了某些内容。


谢谢Ryan。我按照你说的做了,问题解决了。 - John Adams

2
除了Ryan的回应之外,项目设置中“构建”选项卡上的配置对当前的构建模式没有影响,这只是让您可以在一个方便的地方修改每个已配置的构建模式下此项目的设置。
您还可以使用默认的“标准”工具栏上列出解决方案配置的“解决方案配置”下拉菜单,该菜单位于“调试”按钮和“解决方案平台”下拉菜单旁边。

1
这非常令人沮丧和反直觉,但却是真的。 我发现一个提示是查看项目属性的编译选项卡上设置为“Active”的构建类型。它看起来像“Active(Debug)”或“Active(Release)”。 - Wingman4l7

2

我曾经遇到过与VS 2008相同的奇怪问题。在debug模式下编译的项目很好,但是在release模式下却出现了很多错误信息。试错数天后,我终于找到了问题所在:一些文件的路径超过了260个字母。之所以在debug模式下工作正常,是因为单词“debug”比单词“release”少2个字母。它恰好越过了“release”模式中的260个字母的限制线。如果你和我一样有一个嵌套项目目录的长名称,请注意这个问题。当我缩短主目录名称后,问题就消失了。


1
如果你的程序集曾经被编译到 bin\Debug 目录下,那么就说明有人错误地修改了项目。任何使用 ASP.NET 的内容都需要将程序集编译到 bin 目录下。

谢谢...我以为出了什么问题。Ryan在解决方案层面的方法似乎修复了一切。 - John Adams
Build或Rebuild编译操作何时使用bin\debug文件夹?我相信过去看到过.DLL文件存放在那里,但没有引起太多注意。我以为(很明显是错误的)bin包含Release模式构建,而bin\debug则包含Debug构建。既然这不正确并且所有内容始终需要放在bin中,那么保持清楚特定.DLL文件是如何编译的最好方法是什么? - John Adams
2
对于基于ASP.NET的项目,只有bin文件夹。大多数其他项目可能会有一个名为 bin<configuration> 的文件夹。对于ASP.NET项目,IIS只能查找单个包含程序集的文件夹 - IIS无法知道这是发布版本还是调试构建。 - John Saunders
谢谢John。我今天遇到了这种情况,现在终于开始有点明白了。因此,我将研究“最佳实践”,以便跟踪Web项目中bin\中的内容(即它是作为Debug还是Release编译的);我认为这很难知道,而其他项目类型显然会在bin子文件夹中命名以反映构建类型。 - John Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接