5

奇妙な問題があります

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

Releaseこれは、 と の両方の構成で正しく機能していDebugます。しかし、リリース構成を使用して公開しようとすると、この条件は実行されません。パブリッシュがデバッグ DLL を使用しているようです。

私は何を逃したのですか?

4

3 に答える 3

3

さまざまなデプロイメントモードに基づいて、プロジェクトごとにDEBUG定数を定義するかどうかを制御する設定があります。チェックボックスがオンになっていることを確認して、定数が「リリースモード」に定義されていることを確認するには、この回答を参照してくださいDefine DEBUG constant

このチェックボックスがオンになっていない場合、サイトをコンパイルする前にデバッグコードがプリプロセッサによって削除され、他の回答としてELSEを含めても、コードは実行されません。

それが機能しない場合は、別の可能性として、リリースコードを実行しているマシンにmachine.configデプロイメント要素が含まれている可能性があります。

<deployment retail="true" />

web.configこの要素は、アプリケーションの設定を上書きし、マシン上のすべての.NETアプリケーションのデバッグフラグをfalseに設定します。

したがって、可能であれば、それを確認してください。私があなたに与えた最初の選択肢ははるかに可能性が高いと思いますが。

于 2013-03-05T15:06:00.127 に答える
0

以前はWebFormsを使用していると思っていたのに対し、mvcタグに気付いたので、他の答えの代わりになります。

ビューで偶然に提供したコードスニペットはありますか?

その場合、プロジェクトのDEBUG設定は、実行時にビューが生成されるときに尊重されないため、web.configファイルのデバッグフラグのみが尊重されます。

詳細については、この回答を参照してください。

于 2013-03-05T16:03:57.243 に答える
0

まず最初に、この「if」に足を踏み入れて、try\catch を使用していることを確認する必要があります。

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

バージョンを取り出して実行するよりも。あなたが「もし」にいるなら、あなたはそれを知っているでしょうし、あなたが例外を持っているなら、あなたもそれを知っています.

あなたも試すことができます

#if DEBUG
....
#else
.....
于 2013-03-05T14:33:59.893 に答える