Есть ли #define в C#, который позволяет мне знать во время компиляции, если я компилирую для x86 (Win32) или x64 (Win64)?Целевая платформа/процессор во время компиляции
ответ
Не то, чтобы я знал. Вам придется объявить о себе в разных конфигурациях проекта.
Насколько я знаю, Visual Studio определяет только константы DEBUG и TRACE. Вместо того, чтобы объявлять такую константу вручную в конфигурациях проекта, вы можете использовать NANT для создания своего проекта. Он может определить платформу сборки во время компиляции и соответствующим образом определить пользовательскую директиву.
По умолчанию нет способа сделать это. Причина в том, что код 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 новых конфигурации платформы в моем проекте.