1

Visual StudioでC#プロジェクトをプロファイリングする場合にのみ、PROFILEのようなコンパイルシンボルを定義したいと思います。通常のデバッグまたはリリースビルドでは、定義しないでください。

したがって、#ifと#endifの間のコードは、プロファイリング時にのみコンパイルされます。

#if PROFILE
  DataCollection.StartProfile(ProfileLevel.Process, DataCollection.CurrentId); 
#endif

実行時チェックではなく、コンパイル時チェックである必要があります。その理由は、一部のチームのPCにはプロファイラーがなく(VS 2012 Standardには含まれていません)、コードを変更せずに任意のシステムでコンパイルしたいためです。

4

1 に答える 1

2

新しい構成を作成します。

  • [ビルド]をクリックし、 [構成マネージャー]を選択します。
  • [アクティブなソリューション構成]をクリックし、 [新規]を選択します。
  • 名前を入力Profileし、テンプレートとして使用する構成を選択します (プロファイリング用だと思います)。Release
  • OKで確認するとProfile、ソリューション内の各プロジェクトに名前が付けられた新しい構成が作成されます。
  • 各プロジェクトのプロパティを開き、[ビルド] タブで [条件付きコンパイル シンボルPROFILE] にシンボルを追加し、プロパティを保存します。

Profile構成をビルドすると、PROFILEシンボルが定義されます。この投稿もご覧になることをお勧めします。ビルドを自動化する場合は、コマンドラインからプロパティをPROFILE使用してシンボルをソリューションから除外することができますMSBuild(プロファイリング用にビルドすることはあまりないと思います)。

編集構成を 使用すると、それを行うことができますが、への壊れた参照からあなたを救うことはできませんMicrosoft.VisualStudio.Profiler.dll)。私が提案するのは、このすべてのコードを別のライブラリに移動して、コンパイルして出荷することです。そこで、メソッドのみを公開します。

public static class ProfilingHelpers
{
    [Conditional("PROFILE")]
    public static void StartProfiling()
    {
        DataCollection.StartProfile(ProfileLevel.Process, DataCollection.CurrentId);
    }
}

コードでは常にそれを呼び出しますが、PROFILEが定義されている場合にのみ実行されます (そのため、各プロジェクトに新しい構成を追加する必要はなく、1 つの DLL のみに追加する必要があります)。

于 2013-03-20T11:39:37.167 に答える