Целевая платформа / процессор во время компиляции - PullRequest
7 голосов
/ 07 февраля 2009

Есть ли в C # #define, который позволяет мне во время компиляции знать, собираюсь ли я для x86 (Win32) или x64 (Win64)?

Ответы [ 3 ]

6 голосов
/ 08 февраля 2009

По умолчанию нет способа сделать это. Причина в том, что код 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 новые конфигурации платформы в моем проекте.

1 голос
/ 07 февраля 2009

Насколько я знаю, Visual Studio определяет только константы DEBUG и TRACE. Вместо объявления такой константы вручную в конфигурациях проекта вы можете использовать NANT для построения вашего проекта. Он может определить платформу сборки во время компиляции и соответственно определить пользовательскую директиву.

0 голосов
/ 07 февраля 2009

Не то, что я знаю. Вам придется заявить о себе в разных конфигурациях проекта.

...