Visual Studio 2023中C++项目升级指南_第1页
Visual Studio 2023中C++项目升级指南_第2页
Visual Studio 2023中C++项目升级指南_第3页
Visual Studio 2023中C++项目升级指南_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页VisualStudio2023中C++项目升级指南ccurredduringXMLparsing:File:D:\Sample\ConsoleApp\ConsoleApp.vcprojLine:28Column:5ErrorMessage:Systemerror:-2147154677.Thefile'D:\Sample\ConsoleApp\ConsoleApp.vcproj'hasfailedtoload.

这是因为转换过程需要那些平台的属性值才能成功进行。你可以通过查看以下目录获悉已安装了哪些平台:%ProgramFiles%\MSBuild\Microsoft.cpp\V4.0\Platforms(或者查看x64平台下的%ProgramFiles(x86)%\MSBuild\Microsoft.cpp\V4.0\Platforms)。

3)如果可能的话,使用本地的多定向支持来对VisualStudio2023工具集进行构建

在VisualStudio2023中,我们新增了本地的多定向支持(Multi-Targeting),通过使用新的基于MSBuild的项目系统,你可以在VisualStudio2023的IDE中为VisualStudio2023工具集构建目标。关于这一特性,你可以看看这篇博客。我们建议用户,特别是拥有大型代码库的用户,在升级时先利用这一特性在VisualStudio2023中构建VisualStudio2023工具集的程序。这样,当你在升级过程中碰到问题,就可以把那些跟项目系统或构建系统相关的问题与工具的问题区别开来。这将会让你更加平滑地升级到VisualStudio2023工具集。

一旦升级完成,属性表文件(.VisualStudioprops)就会被转换成新的格式(.props)。同样,项目文件(.vcproj)也会被转换为新的格式(.vcxproj)。值得注意的是,新的项目文件会与旧的项目文件同时生成。在转换过程中还产生了一种新的文件类型(.filter.vcxproj),该过滤器文件包含用来显示解决方案的资源管理器文件夹信息。该过滤器信息原本是项目文件的一部分,然而这种变化是必要的,因为只要项目文件发生变化,MSBuild就会请求重新构建。通过在一个单独的文件中保存过滤器信息,就可以在避免重新构建整个项目的情况下修改过滤器。

注意:升级过程不会转换.user文件。因此,你的调试和部署设置在转换后将不会被保留。

在VisualStudio2023中,一个新的命令行升级工具VCUpgrade.exe也被加入了进来。此命令行工具,适合在只有一个项目的情况下进行升级,因为它无法把解决方案文件作为输入,并将其解析成项目文件。VCUpgrade.exe位于$(VisualStudioInstallDir)\common7\Tools目录下,该工具也将附带在WinSDK的下一个版本中,这样用户就可以在没有VisualStudioIDE的情况下用命令行对WinSDK中的项目文件进行升级。

升级过程中的警告

以下是转换过程中,你可能会遇到的一些常见警告:

1)链接器输出目录

在升级时你可能会看到的一个警告是MSB8012:$(TargetPath)和链接器的OutputFile属性的值不匹配:

-MSB8012:$(TargetExt)('.dll')doesnotmatchtheLinker'sOutputFilepropertyvalue'C:\foo\Debug\MFCActiveX.ocx'('.ocx')inprojectconfiguration'Debug|Win32'.Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(TargetExt)propertyvaluematchesthevaluespecifiedin%(Link.OutputFile).-MSB8012:$(TargetPath)('C:\foo\Debug\MFCActiveX.dll')doesnotmatchtheLinker'sOutputFilepropertyvalue'C:\foo\Debug\MFCActiveX.ocx'('C:\foo\Debug\MFCActiveX.ocx')inprojectconfiguration'Debug|Win32'.Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(TargetPath)propertyvaluematchesthevaluespecifiedin%(Link.OutputFile).

Link.OutputFile是在属性页中Linker-General-OutputFile这一项中定义的值。默认情况下,它的值是$(OutDir)$(TargetName)$(TargetExt),与$(TargetPath)相同。当我们把一个应用程序从之前的版本转换过来时,并没有办法可以很好地解析出Link.OutputFile被$(TargetName)和$(TargetExt)的值,因为不同的用户可能用不同的方法对其进行了赋值。为了解决这一点,我们决定在转换过程中保留Linker.OutputFile中的值。在转换之后,$(TargetName)将默认为$(ProjectName),$(TargetExt)将默认为该类应用程序的默认扩展名:动态库文件为.dll,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论