2009-06-25 8 views
3

Ich möchte in der Lage sein, auf eine von 2 Assemblys zu zeigen, basierend auf dem Modus (DEBUG oder RELEASE), den ich in meiner VS2005 IDE ausgewählt habe. So etwas wie dies (was nicht funktioniert):"#if DEBUG" in einer ASPX/ASCX-Seite

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VideoDialog.ascx.cs" Inherits="Company.Web.Base.Controls.VideoDialog" %> 

<% #if DEBUG %> 
<%@ Register TagPrefix="Company" Assembly="Company" Namespace="Company.UI.Controls.VideoControl" %> 
<% #else %> 
<%@ Register TagPrefix="Company" Assembly="Company.UI.Controls.VideoControl" Namespace="Company.UI.Controls.VideoControl" %> 
<% #endif %> 

<Company:CompanyVideo ID="Video1" runat="server"></Company:CompanyVideo> 

Also, meine Frage ist: Wie richtig ich eine #if DEBUG in einem ASPX oder ASCX-Seite?

+0

Für den Datensatz, was Sie arbeiten außerhalb der Kontrolle Referenzen. Ich habe fast die gleiche Technik verwendet, um dynamisch zu steuern, was in meinem Javascript ist und es funktioniert perfekt. Ihr Problem hat also mit den Kontrollreferenzen zu tun. –

Antwort

3

Ich weiß nicht, wie Sie bekommen, was Sie wollen, aber ich habe das gleiche Problem. Ich führe meine Kontrollreferenzen in web.config aus und mache anschließend Build-Schritte, um die entsprechende web.config für release/debug zu kopieren. Es funktioniert, weil Sie ein anderes web.config für die Freigabe/das Debuggen irgendwie benötigen (wenn nur für das Attribut debug = "wahr") und weil Sie einen unterschiedlichen Nachbauschritt für die Prüfung und die Freigabe haben können.

+0

Haben Sie Beispiele, wie Sie das machen? Eine weitere meiner Aufgaben wird es sein, automatische Builds für dieses Unternehmen einzuführen, und ich habe außerhalb eines sehr einfachen Builds sehr wenig getan. –

+1

Die Magie ist, wenn "$ (ConfigurationName)" == "Debug" ... Batch-Datei ... Weitere Informationen: gefunden SO Frage mit etwas Beratung http://stackoverflow.com/questions/150053/how-to- run-Visual-Studio-Post-Build-Ereignisse-für-Debug-Build-only und die MSDN Docs: http://msdn.microsoft.com/en-us/library/ke5z92ks.aspx und ein Blog-Eintrag http://www.adduxis.com/blogs/blogs/sven/archive/2005/11/01/15.aspx – MatthewMartin

3
<% 
//<compilation debug="false"> in web.config 
//*.aspx 

#if DEBUG 
    Response.Write("<script type=\"text/javascript\">"); 
    Response.Write("$.validator.setDefaults({ debug: true })"); 
    Response.Write("</script>"); 
#endif 

%> 
2

Ein anderer Ansatz ist die Verwendung der HtmlHelper-Erweiterungsmethode. Grundsätzlich kodieren Sie eine C# Datei mit etwas wie folgt aus:

namespace ExtensionHandlers 
{ 
    public static class MetaTags 
    { 
     public static string GetMetaTags(this HtmlHelper html) 
     { 
      #if DEBUG 

      return string1; 

      #else 

      return string2; 

      #endif 
     } 
    } 
} 

Dann in Ihrer ascx Datei importieren Sie die Datei:

<%@ Import Namespace="ExtensionHandlers" %>

Und schließlich, wo Sie den Code will nur dies tun:

Haftungsausschluss: Ich habe dies nicht kompiliert, es gibt wahrscheinlich Codierungsfehler. Viel Glück.

+0

Das funktioniert nur in ASP.NET MVC – Jaap

+0

@Jaap: Für reguläre WebForms sollte dies eine geschützte Methode in Seitencode sein. hinter der Klasse – abatishchev