19 Stimmen

Debug.Assert erscheint im Freigabemodus

Wir alle wissen, dass Debug.Assert werden nicht in die DLLs kompiliert, wenn sie im Release-Modus kompiliert werden. Aber aus irgendeinem Grund Debug.Assert hat in der Release-Version einer von mir geschriebenen Komponente erscheinen. Ich vermute, dass ich meine csproject-Einstellung durcheinander gebracht habe.

Irgendeine Idee, warum Debug.Assert im Freigabemodus erscheint?

P/S: Ich habe zweimal überprüft, ob ich wirklich im Release-Modus kompiliert habe, bevor ich diese Frage gestellt habe.

Anmerkung 2: Ich habe mein csproject zweimal überprüft und festgestellt, dass in der Release-Konfiguration die DEBUG-Konstante definieren ist nicht angekreuzt, was bedeutet, dass meine Einstellung für diesen Teil korrekt ist.

32voto

Julien Hoarau Punkte 47065

Prüfen Sie die DefineConstants Eigenschaft in Ihrer Projektdatei, sollte es sein :

  • <DefineConstants>DEBUG;TRACE</DefineConstants> para Debuggen Konfiguration
  • <DefineConstants>TRACE</DefineConstants> para Freigabe Konfiguration

Stellen Sie sicher, dass Sie keine #define DEBUG in Ihrem Code.

20voto

Graviton Punkte 79320

Ich habe die Antwort herausgefunden: Es liegt daran, dass es eine #define DEBUG Präprozessor, der am Anfang einer cs-Datei innerhalb des Projekts definiert ist. Sein Entfernen löst das Problem

13voto

Dan Puzey Punkte 32863

Denken Sie daran, dass der "Release-Modus" nur eine Build-Konfiguration mit einer Name der "Freigabe". Das sagt nicht unbedingt etwas über die verwendeten Kompilierungseinstellungen aus: Es ist durchaus möglich, eine Konfiguration mit dem Namen "Release" zu erstellen, die tatsächlich alles mit Debug-Einstellungen kompiliert. Oder, in der Tat, kompiliert überhaupt nichts!

Die anderen Antworten deuten auf einige Stellen hin, an denen Sie nachsehen sollten - aber im Grunde klingt es so, als hätten entweder Ihre Projekt- oder Lösungseinstellungen "Release"-Builds so rekonfiguriert, dass sie Debug-Informationen enthalten.

Eine Möglichkeit, die noch nicht erwähnt wurde: Wenn Sie in VS das Kombinationsfeld für die Build-Konfiguration (wo Sie normalerweise "Debug" oder "Release" auswählen) herunterklappen und "Configuration Manager" wählen, können Sie sehen, was die einzelnen Build-Konfigurationen für jedes Ihrer Projekte bedeuten. Sie werden feststellen, dass Sie z. B. einen "Release"-Build der Projektmappe so konfigurieren können, dass einige Komponenten weiterhin im Debug-Modus erstellt werden, wenn Sie das möchten.

4voto

Ralf de Kleine Punkte 11038

Haben Sie die Projektdatei überprüft? Definieren Sie Konstanten, die NICHT DEBUG enthalten sollten.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

1voto

Russ Clarke Punkte 16993

Verwenden Sie irgendeine Art von Build-Prozess, wie Nant oder MSBuild, oder sogar ein Web-Deployment-Projekt?

Stellen Sie außerdem sicher, dass im Freigabemodus in den Projekteigenschaften die Option "Define DEBUG Constant" nicht aktiviert 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