【问题标题】:asp.mvc view enteres #IF DEBUG in release configurationasp.mvc 视图在发布配置中进入#IF DEBUG
【发布时间】:2010-11-25 14:35:57
【问题描述】:

我有一个 ASP MVC 视图,其中有以下语句

#if DEBUG
  //section 1
  //do stuff
#else
  //section 2
  //do other stuff
#endif

在 Visual Studio 中,我从下拉列表中选择发布配置进行构建时,代码仍会逐步执行第 1 节。

在解决方案配置属性中,解决方案的所有子项目都设置为发布配置。

我在这里没有得到什么?

【问题讨论】:

    标签: asp.net-mvc configuration debugging


    【解决方案1】:

    了解您的项目有两个完全独立的编译,这一点很重要。第一个是您在 Visual Studio 中所做的。第二个是 ASP.NET 在提供页面之前所做的。您的视图中的 if DEBUG 在第二步中完成。您描述的发布版本是第一步。因此,您项目的调试/发布设置与 Web.config/ASP.NET 编译器中的调试设置完全无关。

    此外,您的 Visual Studio 版本完全不适合更改 Web.config 中的调试设置。这是两个独立的编译,一个不应影响另一个。

    另一方面,当您在 Visual Studio 中进行调试时,您可能完全合理地需要让您的视图表现出不同的行为,您可以这样做。您只需将“if”语句移到视图之外并移到由 Visual Studio 编译的内容中,而不是 ASP.NET。我们使用 HTML 助手来完成此操作。例如:

            /// <summary>
            /// Returns the HTML to include the appropriate JavaScript files for 
            /// the Site.Master.aspx page, depending upon whether the assembly 
            /// was compiled in debug or release mode.
            /// </summary>
            /// <returns>HTML script tags as a multi-line string.</returns>
            public static string SiteMasterScripts(this UrlHelper helper)
            {
                var result = new StringBuilder();
    #if DEBUG
                result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.debug.js"));
    #else
                result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.js"));
    #endif
            // etc. ...
    

    这包括在 Visual Studio 中以调试配置运行时调试 JS 文件,但在其他情况下最小化 JS。

    【讨论】:

    • 在缩小和完整 javascript/css 之间切换正是我使用这个 IF DEBUG 的原因。谢谢你的回答。
    • 这让人困惑,因为 Visual Studio 将错误的文本块变灰。
    • +1 关于两个编译器的很好的解释。现在说得通了。
    【解决方案2】:

    在您的web.config 文件中设置&lt;compilation debug="false"&gt;

    【讨论】:

    【解决方案3】:

    检查您的项目设置以确保未定义 DEBUG。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      相关资源
      最近更新 更多