将项目配置为面向平台
可使用 Visual Studio 将应用程序版本设置为面向不同平台(处理器体系结构),包括 Arm64 和其他平台。 无需在平台上运行 Visual Studio 即可针对该目标平台进行生成。 有关 Visual Studio 中 Arm64 支持的详细信息,请参阅支持 ARM 的设备上的 Visual Studio。 有关 .NET 开发的 64 位平台支持,请参阅 64 位应用程序。
注意
Visual Studio 2022 作为 64 位应用程序运行。 这完全独立于可以在 Visual Studio 中针对你的项目面向的平台。 可以使用任何版本的 Visual Studio 同时面向 32 位和 64 位平台。
可使用 Visual Studio 将应用程序版本设置为面向不同平台(处理器体系结构),例如 x86 和 x64。 有关 .NET 开发的 64 位平台支持,请参阅 64 位应用程序。
注意
Visual Studio 作为 32 位应用程序运行。 这完全独立于可以在 Visual Studio 中针对你的项目面向的平台。 可以使用任何版本的 Visual Studio 同时面向 32 位和 64 位平台。
使用 Configuration Manager 设定目标平台
“配置管理器”提供了一种快速添加面向项目的新平台的方法。 如果选择 Visual Studio 附带的平台之一,则设置配置为所选平台生成项目。
若要以本机 C++ 项目中的某些平台为目标,需要为平台安装生成工具。 适用于 x86 和 x64 平台的 C++ 生成工具随默认 C++ 工作负载一起安装。 如果面向另一个处理器体系结构(例如 Arm64),那么在继续之前,需要使用 Visual Studio 安装程序为平台安装生成工具。 请参阅修改 Visual Studio。 无需在 Arm64 设备上运行 Visual Studio 以面向 Arm64。 对于 Arm64,可以安装 Arm64 生成工具或 ARM64EC 生成工具;请参阅 Arm64 Visual Studio。
对于 .NET 开发,.NET 6 或更高版本需要以 Arm64 平台为目标。 请参阅对 macOS 11 和 Windows 11 的 Arm64 和 x64 .NET 支持。
配置项目以面向 Arm64 和其他平台
在菜单栏上,依次选择“生成”>“Configuration Manager” 。
在“活动解决方案平台”列表中,选择一个平台作为解决方案目标,然后选择“关闭”按钮。
如果所需平台未出现在“活动解决方案平台”列表中,请选择“新建” 。 为特定平台安装工具后,你将能够添加针对该平台的新解决方案和项目配置。
此时将显示“新建解决方案平台”对话框。
在“键入或选择新平台”列表中,选择所需的平台(处理器体系结构);例如
ARM64
。注意
如果对配置进行了重命名,则可能需要修改“项目设计器”中的设置,以面向正确的平台。
如果要复制当前平台配置的设置,请选择它,然后选择“确定”按钮。
将项目配置为面向不同平台
在菜单栏上,依次选择“生成”>“Configuration Manager” 。
在“活动解决方案平台”列表中,选择一个平台作为解决方案目标,然后选择“关闭”按钮。
如果所需平台未出现在“活动解决方案平台”列表中,请选择“新建” 。 为特定平台安装工具后,你将能够添加针对该平台的新解决方案和项目配置。
此时将显示“新建解决方案平台”对话框。
在“键入或选择新平台”列表中,选择所需的平台(处理器体系结构);例如
x64
。注意
如果对配置进行了重命名,则可能需要修改“项目设计器”中的设置,以面向正确的平台。
如果要复制当前平台配置的设置,请选择它,然后选择“确定”按钮。
注意
Win32 平台名称用于 C++ 项目,这意味着 x86。 Visual Studio 同时考虑项目级平台和解决方案级平台,并且项目平台来自特定于语言的项目系统。 C++ 项目使用 Win32 和 x64,但解决方案平台使用 x86 和 x64。 选择 x86 作为解决方案配置时,Visual Studio 将为 C++ 项目选择 Win32 平台。 若要查看项目级平台和解决方案级平台设置,请打开“Configuration Manager”并记下这两个平台设置。 解决方案级平台显示在“活动解决方案平台”下拉列表中,表显示每个项目的项目级平台。
以项目设计器或项目属性 UI 中的平台为目标
“项目设计器”或“项目属性”UI 还提供使项目面向不同平台的方法。 如果在“新解决方案平台”对话框中选择列表中包含的一个平台并不适合你的解决方案,你可以创建自定义配置名称并修改“项目属性”中的配置,以面向正确的平台。
此任务的执行根据所用编程语言而有所不同。 有关详细信息,请参阅以下链接:
对于 Visual Basic 项目,请参阅 /platform (Visual Basic)。
对于 C# 项目,请参阅“项目设计器”->“生成”页 (C#)。
首选 32 位设置
在 .NET Framework 4.5 或更高版本项目的项目设计器中,“生成”页中的“首选 32 位”设置用于处理在生成 AnyCPU
配置时,你希望应用程序在同时支持 32 位和 64 位模式的平台上执行时以 32 位模式运行的场景。 如果启用此复选框,则会将 PlatformTarget
生成属性设置为 anycpu32bitpreferred
。 请参阅适用于 C# 的 PlatformTarget 注释和适用于 Visual Basic 的 /platform 注释。
手动编辑项目文件
有时,需要手动编辑项目文件以进行某些自定义配置。 例如,当你有无法在 IDE 中指定的条件(例如对两个不同平台而言不同的引用)时,或者必须为特定平台注册的程序集才能将其公开给 COM。 处理项目文件的工具是 MSBuild。
注意
建议不要手动编辑在 Visual Studio 中使用的 C++ 项目文件。
COM 注册
如果要生成 .NET 程序集并将其公开给 COM,Visual Studio 会将程序集注册到特定的平台体系结构,因为每个平台体系结构都有不同的注册表位置(例如 x86
和 x64
)。 如果程序集已面向特定平台,则使用该平台,但如果要注册为 Any CPU
生成的 .NET 程序集,则 MSBuild 默认为 MSBuild 的当前运行时注册它。 如果要在 Visual Studio 中生成,则这是位于 Visual Studio 2022 及更高版本中的 x64
,以及Visual Studio 2019 及更早版本中的 x86
。 如果使用本文前面所述的方法设置平台体系结构,或在项目文件中指定其他 PlatformTarget
方法,MSBuild 将在注册时遵循该体系结构。 可以设置一个属性来替代此行为 RegisterAssemblyMSBuildArchitecture
。 通过将 RegisterAssemblyMSBuildArchitecture
添加到项目文件中的顶级 PropertyGroup
元素,可以将它设置为所需的平台体系结构(如 x86
或 x64
)。
引用 x86 和 x64 程序集和 DLL
你可能拥有同时具有 x86 和 x64 版本的 .NET 程序集或 DLL。 若要将项目设置为使用这些引用,请先添加引用,然后打开项目文件并对其进行编辑,以添加具有同时引用配置和目标平台的条件的 ItemGroup
。 例如,假设引用的二进制文件是 ClassLibrary1,并且调试和发布配置以及 x86 和 x64 版本有不同路径。 然后,使用四个包含所有设置组合的 ItemGroup
元素,如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Platforms>AnyCPU;x64;x86</Platforms>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64'">
<Reference Include="ClassLibrary1">
<HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64'">
<Reference Include="ClassLibrary1">
<HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
<Reference Include="ClassLibrary1">
<HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86'">
<Reference Include="ClassLibrary1">
<HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
有关项目文件的详细信息,请参阅 MSBuild 项目文件架构引用。