2

ローカルマシンでテストするためにデバッグモードで公開しているだけで、「#if debug」モードが機能して、まだ本番環境で必要のない機能をテストできるようになることを望んでいました。

デバッグモードで公開しても、web.configにはまだ

<system.web>
    <compilation debug="true" targetFramework="4.0">
</system.web>

しかし、プロジェクトのdllでリフレクターを使用すると、次のようなコードになります。

#if debug
    PlaceHolder1.Visible = true;
#endif

存在しません。コンパイラがそれを削除したと思います。

注:私はビルドについて話しているのではなく、公開について話しているのです。上記のコードがまだ存在している場合、デバッグビルドを実行すると期待どおりに機能します

これは予想される動作ですか?デバッグモードで公開しているときに、コンパイラにこれらのコードを含める方法はありますか?私はこれについてすべて間違っていますか?

更新: @dashのコメントに応えて、私のパッケージ/公開Web設定は次のとおりです。

Web設定のパッケージ化/公開

4

3 に答える 3

5

C# プリプロセッサ シンボルでは、大文字と小文字が区別されます。試す:

#if DEBUG
于 2012-10-04T22:49:55.527 に答える
2

はい、それは予想される動作です。条件付きコンパイルディレクティブ(例#if debug)は、コンパイル時にのみ考慮されます。C#コードは、ビルド時にコンパイルされます。compilation debugその時あなたが指摘した選択肢は何ですか?よくわかりませんが、aspxページのコンパイル方法や、Webサイトでビルドされたコードを実行する方法が変わると思います。これは、コードがビルドされるときではなく、ページが表示される直前に発生します。

于 2012-10-04T22:41:03.430 に答える
2

Visual Studio の場合:

1. Right click on your project choose properties.
2. Go to the "Build" tab
3. Select Release in the "Configuration" combobox.
4. Check the "Define DEBUG constant"-checkbox.

本番環境にデプロイする前に、忘れずに削除してください。

編集: 小文字のデバッグを使用しているため、ステップ 4 の代わりに、ステップ 4 の「条件付きコンパイル シンボル」にデバッグ (小文字) を入力できます。 条件付きコンパイル シンボル

于 2012-10-04T22:47:38.903 に答える