【问题标题】:Target platform/processor at compile time编译时的目标平台/处理器
【发布时间】:2010-10-06 04:03:27
【问题描述】:

C# 中是否有一个#define 可以让我在编译时知道我是针对 x86 (Win32) 还是 x64 (Win64) 进行编译?

【问题讨论】:

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


    【解决方案1】:

    默认情况下没有办法做到这一点。原因是 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 个新的平台配置。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-04
          • 2018-04-12
          相关资源
          最近更新 更多