#if c#でデバッグしない?


127

私はVBコードに次の行を持っています:

#if Not Debug

変換する必要があり、C#で表示されませんか?

それと同等のものはありますか、または回避策はありますか?

回答:


239

以下を使用する必要があります。

#if !DEBUG
    // Your code here
#endif

または、シンボルが実際に Debug

#if !Debug
    // Your code here
#endif

ドキュメントから、DEBUGブール値として効果的に扱うことができます。したがって、次のような複雑なテストを実行できます。

#if !DEBUG || (DEBUG && SOMETHING)

15

ここで何が行われているのかをよく理解しているのは#if、前処理式でありDEBUG、条件付きコンパイルシンボルです。詳細について、MSDNの記事をご覧ください

既定では、デバッグ構成の場合、Visual Studioはプロジェクトのビルドプロパティの下の[ DEBUG定数定義 ]オプションをチェックします。これは、C#とVB.NETの両方に当てはまります。夢中になりたい場合は、新しいビルド構成を定義し、独自の条件付きコンパイルシンボルを定義できます。これを見たときの典型的な例は次のとおりです。

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif

10

他の人を助けるために、ここに私の答えがあります。

これは正しく機能しません:

#if !DEBUG
     // My stuff here
#endif

しかし、これはうまくいきました:

#if (DEBUG == false)
     // My stuff here
#endif

3
これが投稿された日は正しかったかもしれませんが、少なくともVS 2015では!DEBUGは期待どおりに機能します
Ole Albers

5

のようなものがうまくいくと思います

 #if (DEBUG)
//Something
#else
//Something
#endif

5
この条件#ifステートメントでは、括弧に注意する必要はありません。#if DEBUG
書き込み

0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }

5
ランタイムロジックを使用してコンパイル時に実行できることを処理するため、これは悪い答えです。
antiduh 2016年

設計時のT4テンプレート作成などでは、この種のものが時々必要になります。
StingyJack 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.