アプリケーションを公開しましたが、「管理者」機能を追加したいと考えています。多くのデバッグ情報が表示されます。アプリケーションをデバッグ モードで実行すると、アプリケーションをより明確にするために、リリース モードではこれらすべてが削除されます。
アプリケーションにログインする場合、ログイン名とパスワードを確認したいので、たとえば「管理者」、「パスワード」でログインしたときに、デバッグ情報も確認したいと考えています。
質問:
コードでリリースからデバッグに切り替えることは可能ですか?
アプリケーションを公開しましたが、「管理者」機能を追加したいと考えています。多くのデバッグ情報が表示されます。アプリケーションをデバッグ モードで実行すると、アプリケーションをより明確にするために、リリース モードではこれらすべてが削除されます。
アプリケーションにログインする場合、ログイン名とパスワードを確認したいので、たとえば「管理者」、「パスワード」でログインしたときに、デバッグ情報も確認したいと考えています。
質問:
コードでリリースからデバッグに切り替えることは可能ですか?
コンパイラはデバッグ ビルドとリリース ビルド用に異なるアセンブリを生成するため、短い答えはノーです。開発者がコンパイル時の条件付きコードを追加した場合、一部のコードが欠落している可能性があります。
#if DEBUG
DisableSharingWithPrism();
#endif
デバッグコードでコードをコンパイルするだけです。リリース モードでは、コードは存在しません。
#if DEBUG
これを回避するには、ユーザーが管理者であるかどうかを判断するメソッドを作成し、呼び出しを見つけてこのメソッドに置き換えます。次に例を示します。
if (UserIsAdmin())
{
DisableSharingWithPrism();
}
それは、デバッグ モードでその追加情報をどのようにレンダリングするかによって異なります。「#ifdef DEBUG」で囲んだ場合、コードはリリースビルドでコンパイルされていないため、dll に含まれていないため、実行できません。
基本的にリリースビルドにデバッグ情報を取得するには、置き換える必要があります
#if DEBUG
OutputSomeDebugInfo();
#endif
と
if (GlobalFlags.IsDebugMode)
{
OutputSomeDebugInfo();
}
ここで、「GlobalFlags」は、管理者ログインを使用するとき、またはデバッグ ビルドを実行するときにのみ true に設定される、静的 bool メンバーまたはプロパティ「IsDebugMode」を使用して作成する必要がある静的パブリック クラスです。
log4net やエンタープライズ ライブラリのようなロギング ツールとトレース ツールは、アプリケーションに記録される内容をきめ細かく構成可能な制御を提供するように設計されているため、これらも確認することをお勧めします。