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 的目标平台
Configuration Manager 提供了一种方法,可让你快速添加新平台以针对项目。 如果选择 Visual Studio 附带的其中一个平台,则会设置一个配置,以便为所选平台生成项目。
若要在本地平台的 C++ 项目中定位某些平台,需要为这些平台安装相应的构建工具。 C++ x86 和 x64 平台的构建工具随默认的 C++ 工作负载一起安装。 如果面向另一个处理器体系结构(如 Arm64),则需要使用 Visual Studio 安装程序为平台安装生成工具,然后再继续作。 请参阅修改 Visual Studio。 无需在 Arm64 设备上运行 Visual Studio 以面向 Arm64。 对于 Arm64,可以安装 Arm64 生成工具或 ARM64EC 生成工具;请参阅 Arm64 Visual Studio。
对于 .NET 开发,需要 .NET 6 或更高版本才能面向 Arm64 平台。 请参阅 适用于 Arm64 和 x64 的 macOS 11 和 Windows 11 的 .NET 支持。
将项目配置为面向 Arm64 和其他平台
在菜单栏上,选择“ 生成>配置管理器”。
在 “活动解决方案平台 ”列表中,选择要面向的解决方案的平台,然后选择“ 关闭 ”按钮。
如果所需的平台未显示在 “活动解决方案平台 ”列表中,请选择“ 新建”。 为特定平台安装工具后,你将能够添加面向该平台的新解决方案和项目配置。
此时将显示“新建解决方案平台”对话框。
在 “类型”或“选择新平台 ”列表中,选择所需的平台(处理器体系结构):例如,
ARM64
.注释
如果为配置指定了新名称,可能需要修改 项目设计器 中的设置以面向正确的平台。
如果要从当前平台配置复制设置,请选择它,然后选择 “确定 ”按钮。
将项目配置为针对不同平台
在菜单栏上,选择“ 生成>配置管理器”。
在 “活动解决方案平台 ”列表中,选择要面向的解决方案的平台,然后选择“ 关闭 ”按钮。
如果所需的平台未显示在 “活动解决方案平台 ”列表中,请选择“ 新建”。 为特定平台安装工具后,你将能够添加面向该平台的新解决方案和项目配置。
此时将显示“新建解决方案平台”对话框。
在 “类型”或“选择新平台 ”列表中,选择所需的平台(处理器体系结构):例如,
x64
.注释
如果为配置指定了新名称,可能需要修改 项目设计器 中的设置以面向正确的平台。
如果要从当前平台配置复制设置,请选择它,然后选择 “确定 ”按钮。
注释
Win32 平台名称用于C++项目,这意味着 x86。 Visual Studio 同时考虑项目级平台和解决方案级平台,项目平台来自特定于语言的项目系统。 C++项目使用 Win32 和 x64,但解决方案平台使用 x86 和 x64。 选择 x86 作为解决方案配置时,Visual Studio 会为C++项目选择 Win32 平台。 若要查看项目级平台和解决方案级平台设置,请打开 Configuration Manager 并记下这两个平台设置。 解决方案级平台显示在 “活动解决方案平台 ”下拉列表中,表显示每个项目的项目级平台。
项目设计器或项目属性用户界面中的目标平台
项目设计器或项目属性 UI 还提供了一种方法,用于通过项目定位不同的平台。 如果在“ 新建解决方案平台 ”对话框中选择列表中包含的平台之一不适用于你的解决方案,则可以创建自定义配置名称,并修改 项目属性 中的设置以面向正确的平台。
执行此任务因使用的编程语言而异。 有关详细信息,请参阅下列链接:
有关 Visual Basic 项目,请参阅 /platform (Visual Basic)。
对于 C# 项目,请参阅“生成”页,“项目设计器”(C#)。
首选 32 位设置
.NET Framework 4.5 或更高版本项目的项目设计器的“生成”页中的“首选 32 位”设置可处理生成配置的情况AnyCPU
,但希望在支持 32 位和 64 位模式的平台上运行时,应用程序以 32 位模式运行。 如果启用该复选框,则 PlatformTarget
生成属性设置为 anycpu32bitpreferred
。 请参阅适用于 C# 的 PlatformTarget 和 /platform for Visual Basic 上的注释。
手动编辑项目文件
有时,需要手动编辑某些自定义配置的项目文件。 例如,当您需要处理在 IDE 中无法明确指定的条件时,例如为两个不同平台定义不同的引用,或者必须为特定平台注册的程序集以使其可以向 COM 公开。 处理项目文件的工具是 MSBuild。
谨慎
不建议手动编辑在 Visual Studio 中使用C++项目文件。
COM 注册
如果要生成 .NET 程序集并将其公开给 COM,Visual Studio 会将程序集注册到特定的平台体系结构,因为每个平台体系结构都有不同的注册表位置(例如 x86
,和 x64
)。 如果您的程序集已经面向特定平台,则使用该平台;但是,如果您正在注册为 Any CPU
构建的 .NET 程序集,那么 MSBuild 会默认为其当前运行时注册它。 如果你在使用 Visual Studio 开发,那在 Visual Studio 2022 及以后版本中是 x64
,在 Visual Studio 2019 及以前版本中是 x86
。 如果使用本文前面所述的方法设置平台体系结构,或在项目文件中指定其他 PlatformTarget
方法,MSBuild 将在注册时遵循该体系结构。 可以设置一个属性来替代此行为 RegisterAssemblyMSBuildArchitecture
。 可以通过将所需的平台体系结构(例如x86
或x64
)添加到项目文件中的顶级PropertyGroup
元素来设置RegisterAssemblyMSBuildArchitecture
。
引用 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 项目文件架构参考。