gpt4 book ai didi

c# - 已部署的 ASP.NET 站点具有 DEBUG true

转载 作者:行者123 更新时间:2023-11-30 13:51:07 24 4
gpt4 key购买 nike

我有一个已部署的 ASP.NET 站点。 debugcompilation 设置为false。我有一些检查 DEBUG 定义的代码,它报告 true

为什么?我需要做什么才能使其成为 false

这曾经有效,但自从我将我的网站从 .NET 2.0 升级到 .NET 3.5 后,我发现了这个问题。请注意,服务器始终是 .NET 3.5。

更新
如上所述,在我的 web.config 文件中,debugfalse(我知道 DEBUG 预处理器符号和 web.config 设置不相关)。另外,VS2010的Configuration Manager只提供Debug作为网站的配置,任何尝试添加Release都会被VS2010覆盖。

我刚刚意识到另一个细节;我正在使用 VS2010 的 SP1 测试版。也许这是导致问题的原因?

最佳答案

我现在还意识到,Emit Debug Information 不仅会创建 PDB 文件,还会启用在 #if DEBUG 子句中运行的任何代码(就像 web.config 中的编译 debug=true 一样)。只要在 Release 模式下编译,此编译选项就不会影响您解决方案中的其他项目。

为了在不启用 DEBUG 代码块的情况下获得网站 PDB 文件的好处,您不应使用 Emit Debug Information 部署网站,而是在指定 compilerOptions="/debug:pdbonly"后发布网站你的 web.config 文件。还指定/optimize- 以确保行号与代码中的行号相同

代码示例:

<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
compilerOptions="/optimize- /debug:pdbonly">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="WarnAsError" value="false" />
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="OptionInfer" value="true" />
<providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
</system.codedom>

使用 PDB 文件编译您的网站但不启用 DEBUG 代码还有另一种解决方法,即通过将 DEBUG 代码块包装在 if (Consts.DEBUG) 子句中。

在您的 App_Code 文件中有一个包含以下代码的 CS 文件:

    public static class Consts
{
static bool _bIsInDebugMode = false;

static Consts()
{
var oConfigSection = System.Configuration.ConfigurationManager.GetSection("system.web/compilation") as System.Web.Configuration.CompilationSection;
_bIsInDebugMode = oConfigSection != null && oConfigSection.Debug;
}

public static bool DEBUG { get { return _bIsInDebugMode; } }
}

现在将任何 #if DEBUG ... #endif 代码块替换为 if (Consts.DEBUG) { ... }

关于c# - 已部署的 ASP.NET 站点具有 DEBUG true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4995200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com