主动解决方案平台VS Project Platform VS Platform目标

jav*_*red 21 .net c# visual-studio

我希望我的应用程序是为x64构建的(因为我使用的是x64 dll).在配置管理器中,我将"Active solution platform"设置为"x64"但是在项目列表Platform中设置为"x86".项目属性中的"平台目标"也设置为"x86"

我完全糊涂了设置目标平台的三个地方:

  • 配置管理器:活动解决方案平台
  • 配置管理器:项目平台
  • 项目属性:平台目标

例如,我可以将Active解决方案平台设置为x64,将Project平台设置为x86,将Project target设置为x64.那意味着什么?

有人可以描述这些选项究竟是什么意思以及它们应该如何一起使用?如何编译到x64?

PHe*_*erg 28

Active Solution Platform允许您为每个项目配置特定的配置组合.Project Platform允许您为项目进行特定的配置设置.这两个设置实际上并没有说明解决方案和项目将在哪个平台上构建,它只是一个配置集,您可以更改其实际设置.

默认情况下,x64设置将项目设置为专门为x64编译,但是可以通过项目Platform Target属性在项目属性中更改(尽管将现有配置集的目标更改为除此之外的任何其他内容都会非常混乱其名称).

每个项目的Platform Target属性都是用于指示项目程序集编译的平台的设置.如果该项目对需要特定平台工作的组件没有任何依赖性,则建议使用AnyCPU设置.

AnyCPU设置将导致程序集为JIT:ed to

  • 32位平台上的x86
  • 64位平台上的x64

有关详细信息,请参阅此问题.

至于您的示例,将Active解决方案平台设置为x64,将Project平台设置为x86,将Project target设置为x64将意味着在选择该解决方案配置时,项目程序集将仅构建为JIT到64位,如果您尝试运行则会导致错误它在32位平台上.

如果您依赖于仅64位资源(例如64位dll),则应使用x64设置.相应地,如果您依赖于仅32位资源,则应使用x86设置.

配置管理器设置可用于更改项目的构建方式,例如使用x86/x64的不同引用程序集,甚至是调试/发布,如此问题.配置集表示为可在构建配置中使用的变量,以控制要包含的内容以及为特定配置运行的构建任务.使用记事本查看项目文件,您将看到它是如何使用的.

  • 疯狂的复杂性,当它看起来足够只有项目属性中的两个开关(x64 | x86 |任何CPU). (10认同)