Visual Studio:如何正确构建和指定x64和x86的配置和平台

21

使用的工具是: Visual Studio 2012 专业版和旗舰版,已更新到最新版本。

我该如何正确指定配置和平台以正确构建 x86 和 x64。

在创建 Winforms 应用程序时,Visual Studio 首先会给出两个配置:Debug 和 Release,并将 AnyCPU 定义为平台。

如果只针对一个平台进行目标设置,那么答案很简单,您可以到生成 | 配置管理器中选择其中一个平台,然后到项目属性的生成页面选择相同的平台 (x86 或 x64),完成!你就得到了(假设你想要 x86)

/bin/x86/Debug
/bin/x86/Release

我有一个包含一个应用程序和多个依赖项目(DLL组件)的解决方案。

由于VS配置管理器在顶部有两个下拉列表,Configuration和Platform,然后在项目级别又有另一个configuration和platform,因此我做了以下操作:

(在继续之前,我认为整个设置都很糟糕,但是...)

我使用最顶层的下拉列表创建了两个新的配置Debug64和Release64,并选择了Mixed Platforms作为平台。

我依次选择了四个主要的解决方案配置,然后将项目级别的configuration和platform设置为相匹配,所以:

Debug64 === Debug64, x64
Release64 === Release64, x64
Debug === Debug, x86
Release === Release, x86

然后我进入项目属性(Alt + Enter)的编译页面,无视平台,依次选择每个配置,然后设置目标处理器以匹配。我将输出更改为以下内容:

Debug64: /bin/x64/Debug
Release64: /bin/x64/Release
Debug: /bin/x86/Debug
Release: /bin/x86/Release

默认情况下,Visual Studio使用顶部平台来设置文件夹,并使用配置名称来设置输出的最后一部分。如果我保存并关闭项目属性,则一切似乎都很好。我可以构建,然后得到正确的文件夹。

问题出现在我在Visual Studio工具栏上切换解决方案配置时。项目属性构建页面会恢复为默认设置,例如/ bin / x64 / Debug64用于调试和类似的东西用于发布。

引发我编写此问题的原因是设计器混淆了,找不到适当的库。

我希望能从Visual Studio解决方案配置下拉列表中选择所需的目标(Debug x64,Release x64,Debug x86,Release x86)并进行构建。

我该如何做?我错了什么吗?

只创建两个解决方案配置,调试和发布,不起作用,因为没有解决方案平台下拉列表,这将针对所有子项目。对我来说,Visual Studio似乎有太多的配置部分和平台部分。也许我只是错过了什么。

1个回答

16
  • 请确认已经生成了自动的调试(debug)和发布(release)解决方案配置。

  • 在解决方案平台中添加x86和x64,如果没有则默认为Any CPU。

  • 从解决方案配置和平台下拉菜单中选择(Debug/Release和x86/x64的各种排列组合),确保项目匹配(它们应该匹配)。

  • 进入每个项目(选择项目名称,然后按Alt+Enter)。

  • 在项目属性页面中,选择(Debug/Release和x86/x64的各种排列组合)。确保目标处理器设置正确(它应该是正确的,但我发现有时它们并不正确,可能是因为之前的尝试)。此外,设置输出目录。这应该是没问题的,也是自动的(/bin/x86/Debug等)。如果不是,请进行修复。

  • Microsoft在工具栏中没有解决方案平台下拉菜单,所以如果您想更改解决方案平台,则必须转到“生成 | 配置管理器”并选择适当的解决方案平台。您可以从“生成 | 配置管理器”中选择解决方案配置(Visual Studio将自动更新工具栏下拉菜单中选择的解决方案配置),或者仅在Visual Studio下拉菜单中选择新的解决方案配置。

    构建项目将会处理剩余的问题。

    构建注意事项: 1. Visual Studio设计器需要用户控件的x86版本才能正确显示。这一点一开始并不明显,但现在明确了。Visual Studio安装在“C:\Program Files(x86)”文件夹中而不是“C:\Program Files”文件夹中,使得Visual Studio成为一个32位应用程序而不是一个64位应用程序,因此只能在设计器中“使用”32位版本。

    1. 可能会有偶发的/bin/Debug和/bin/release文件夹,但它们不会被使用。

    2. 我仍在尝试让BuildVersionInc在不同配置上构建相同代码时不进行递增,但这是一个不同的问题。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接