8

C# には、コンパイル時に x86 (Win32) 用にコンパイルしているか x64 (Win64) 用にコンパイルしているかを知ることができる #define がありますか?

4

3 に答える 3

6

デフォルトでは、これを行う方法はありません。その理由は、C# コードが CLR で実行されるため、特定のプラットフォームをターゲットにするように設計されていないためです。

ただし、これを手で転がすことは可能です。Visual Studio のプロジェクト構成設定を使用して、独自の定数を定義できます。または、もう少し合理化したい場合は、.csproj を自分で編集して、さまざまな定義を持つ構成をいくつか手動でロールバックできます。

たとえば、プロジェクト ファイルを次のようにすることができます。x86/amd64 情報を明確にするために、一部の情報を削除しました。

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <!-- ... -->
    <DefineConstants>TRACE;DEBUG;X86</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|amd64' ">
    <!-- ... -->
    <DefineConstants>TRACE;DEBUG;AMD64</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

これを .csproj ファイルに追加すると、プロジェクトに 2 つの新しいプラットフォーム構成ができます。

于 2009-02-07T21:04:39.117 に答える
1

私の知る限り、VisualStudioはDEBUG定数とTRACE定数のみを定義します。プロジェクト構成でこのような定数を手動で宣言する代わりに、NANTを使用してプロジェクトをビルドできます。コンパイル時にビルドプラットフォームを決定し、それに応じてカスタムディレクティブを定義できます。

于 2009-02-07T18:05:39.683 に答える
0

私が知っていることではありません。さまざまなプロジェクト構成で独自に宣言する必要があります。

于 2009-02-07T17:57:09.417 に答える