18 Stimmen

asp.mvc view gibt #IF DEBUG in der Release-Konfiguration ein

Ich habe eine ASP MVC-Ansicht, wo die folgende Anweisung haben

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

Wenn ich in Visual Studio die Release-Konfiguration aus dem Dropdown-Menü auswähle, um den Build durchzuführen, geht der Code immer noch durch Abschnitt 1.

In den Konfigurationseigenschaften der Projektmappe werden alle Unterprojekte der Projektmappe auf die Release-Konfiguration eingestellt.

Was verstehe ich hier nicht?

34voto

Craig Stuntz Punkte 124703

Es ist wichtig zu verstehen, dass es zwei völlig unterschiedliche Kompilierungen für Ihr Projekt gibt. Die erste ist die, die Sie in Visual Studio durchführen. Die zweite ist die, die ASP.NET durchführt, kurz bevor die Seite ausgeliefert wird. Das if DEBUG innerhalb Ihrer Ansicht wird im zweiten Schritt ausgeführt. Der von Ihnen beschriebene Release-Build ist der erste Schritt. Daher hat die Debug/Release-Einstellung Ihres Projekts überhaupt nichts mit der Debug-Einstellung in Web.config/dem ASP.NET-Compiler zu tun.

Außerdem wäre es für Ihren Visual Studio-Build völlig unangebracht, die Debug-Einstellung in der Web.config zu ändern. Es handelt sich um zwei separate Kompilierungen, und die eine sollte die andere nicht beeinflussen.

Auf der anderen Seite haben Sie wahrscheinlich einen vernünftigen Grund dafür, dass sich Ihre Ansicht anders verhält, wenn Sie innerhalb von Visual Studio debuggen, und Sie können dies tun. Sie müssen nur die "if"-Anweisung aus der Ansicht heraus und in etwas verschieben, das von Visual Studio anstelle von ASP.NET kompiliert wird. Wir tun dies mit einem HTML-Helfer. Zum Beispiel:

        /// <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. ...

Dies schließt Debug-JS-Dateien ein, wenn sie in der Debug-Konfiguration in Visual Studio ausgeführt werden, aber ansonsten minimiertes JS.

3voto

Tomas Aschan Punkte 55585

Satz <compilation debug="false"> in Ihrem web.config Datei.

0voto

Preet Sangha Punkte 62622

Überprüfen Sie die Einstellungen Ihres Projekts, um sicherzustellen, dass DEBUG nicht definiert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X