2013-03-05 7 views
5

Veröffentlichung Ich habe ein seltsames ProblemDEBUG definiert, wenn

#if (!DEBUG) 
    checkLicense(); 
#endif 

Dies funktioniert korrekt in beiden Release und Debug Konfigurationen. Aber wenn ich versuche, mit Release-Konfiguration zu veröffentlichen, wird diese Bedingung nicht ausgeführt. Es sieht so aus, als ob Publish die Debug-DLL verwendet.

Was habe ich verpasst?

+0

Warum tun Sie ein auf DEBUG NICHT auf RELEASE statt eines wahren Zustand Zustand? –

Antwort

0

Zuerst müssen Sie sicherstellen, dass Sie in dieses "if" treten und try \ catch verwenden.

#if (!DEBUG) 
MessageBox.Show("I'm in"); 
try{ 
    checkLicense();} 
catch{MessageBox.Show("ERROR IN checkLicense");} 
#endif 

und dann nehmen Sie eine Version und führen Sie es aus. Wenn Sie im "Wenn" sind, werden Sie es wissen und wenn Sie eine Ausnahme haben, werden Sie es auch wissen.

können Sie auch ist

#if DEBUG 
.... 
#else 
..... 
+0

Ich bin sicher, das ist, warum ich poste es auf so –

+5

Wahrscheinlich nicht "MessageBox.Show" mit einer asp.net app verwenden möchten ... –

+0

Wenn die Option Define DEBUG constant ist nicht in seinen Projekteinstellungen aktiviert Für den Release-Modus denke ich, dass die gesamte Anweisung einfach zur Kompilierungszeit entfernt wird und nichts passieren wird - sogar mit der else-Klausel. –

3

Es gibt eine Einstellung zu kontrollieren, ob die DEBUG Konstante für jede auf den verschiedenen Bereitstellungsarten basierten Projekt definiert versuchen. See this answer, um sicherzustellen, dass die Konstante für den 'Freigabemodus' definiert wird, indem Sie sicherstellen, dass das Kontrollkästchen Define DEBUG constantaktiviert ist.

Wenn das Kontrollkästchen nicht aktiviert ist, wird der Debug-Code vom Präprozessor entfernt, bevor die Site kompiliert wird, und es wird kein Code ausgeführt, auch wenn Sie die ELSE wie die andere Antwort angeben.

Wenn das nicht funktioniert, dann ist eine weitere Möglichkeit, dass die Maschine, die Sie Ihren Freigabecode laufen auf könnte seine machine.config mit der deployment element:

<deployment retail="true" /> 

Dieses Element überschreibt die web.config Einstellung für Ihre Anwendung und setzt das Debug-Flag für alle .NET-Anwendungen auf dem Rechner auf false.

Also, wenn möglich, überprüfen Sie das. Obwohl ich denke, dass die erste Option, die ich Ihnen gegeben habe, viel wahrscheinlicher ist.

+0

Danke für die Antwort. Das Kontrollkästchen Ja bei Freigabe ist deaktiviert. Also wird mein Code entfernt, auch wenn kein Operator verwendet wird? (!DEBUGGEN). –

+0

Ich glaube, versuche das Kontrollkästchen zu aktivieren, die Projektkonfiguration zu speichern und deine Anwendung erneut zu installieren. –

+0

Nein, es ist falsch. Wenn ich Define DEBUG constant im Freigabemodus setze, bekam ich meine Bedingung gleich true in release ( –

0

Alternative zu meiner anderen Antwort, weil ich gerade das MVC-Tag bemerkt, während ich zuvor angenommen habe, dass Sie WebForms verwenden.

Ist das Code-Snippet, das Sie zufällig in einer Ansicht zur Verfügung gestellt haben?

Wenn dies der Fall ist, wird die DEBUG-Einstellung für Ihr Projekt nicht berücksichtigt, wenn die Ansicht zur Laufzeit generiert wird - sie berücksichtigt nur ein Debug-Flag in Ihrer Datei web.config.

See this answer for more information.

+0

in der Controller-Methode –

Verwandte Themen