WindowsOSのバージョンに基づいて条件付きでコンパイルする必要のある単体テストがたくさんあります。この単体テストは、WindowsVista以降でのみ使用可能なTxFをテストしています。
#if WIN_OS_VERSION >= 6.0
// Run unit tests
#endif
WindowsOSのバージョンに基づいて条件付きでコンパイルする必要のある単体テストがたくさんあります。この単体テストは、WindowsVista以降でのみ使用可能なTxFをテストしています。
#if WIN_OS_VERSION >= 6.0
// Run unit tests
#endif
OSのバージョンに基づいて条件付きでコードをコンパイルする方法はないと思います。#defineのドキュメント(私の強調):
シンボルを使用して、コンパイルの条件を指定できます。#ifまたは#elifのいずれかを使用してシンボルをテストできます。条件付き属性を使用して、条件付きコンパイルを実行することもできます。
シンボルを定義することはできますが、シンボルに値を割り当てることはできません。ディレクティブではない命令を使用する前に、#defineディレクティブをファイルに含める必要があります。
/defineコンパイラオプションを使用してシンボルを定義することもできます。#undefを使用してシンボルの定義を解除できます。
/ defineまたは#defineで定義したシンボルは、同じ名前の変数と競合しません。つまり、変数名をプリプロセッサディレクティブに渡してはならず、シンボルはプリプロセッサディレクティブによってのみ評価できます。
#defineを使用して作成されたシンボルのスコープは、それが定義されたファイルです。
代わりに、条件付きで実行する必要があります。
void TestTxF() {
if (System.Environment.OSVersion.Version.Major < 6) {
// "pass" your test
}
else {
// run it
}
}
アップデート:
これは以前に尋ねられました。
デバッグシンボルを自分で管理するだけです。
( Document It! )に固執できるスキーマを考え出すだけで、新しいプラットフォーム用にコンパイルするときは、プロセッサディレクティブを変更することを忘れないでください。
たとえば、シンボルを持つことができます
LATER_THAN_XP
LATER_THAN_VISTA
etc...
次に、を使用#ifdef
して条件付きでコンパイルできます
#ifdef LATER_THAN_XP
//Run Unit Tests
#endif
次に、プロジェクトのプロパティでこれらの定数を定義できます。または、冒険心がある場合は、コンパイル時に定義する正しいシンボルをエクスポートするMSBuildタスクを定義できますが、それは私の給与等級をわずかに上回っています。