目标平台/处理器在编译时

时间:2009-02-07 17:48:12

标签: c# .net target c-preprocessor platform

C#中是否有#define允许我在编译时知道我是在编译x86(Win32)还是x64(Win64)?

3 个答案:

答案 0 :(得分: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个新的平台配置。

答案 1 :(得分:1)

据我所知,Visual Studio只定义了DEBUG和TRACE常量。您可以使用NANT来构建项目,而不是在项目配置中手动声明此类常量。它可以在编译时确定构建平台并相应地定义自定义指令。

答案 2 :(得分:0)

不是我知道的。您必须在不同的项目配置中声明自己的。