gpt4 book ai didi

visual-studio - 如何在 Visual Studio 2017 和 Visual Studio 2019 之间为每个项目引用一份 vcxproj.filters 和 vcxproj.user 副本

转载 作者:行者123 更新时间:2023-12-04 10:59:29 26 4
gpt4 key购买 nike

我有一个在 Visual Studio 2017 社区版中创建的 C++ 项目,我已经打开并使用 Visual Studio 2019 社区版“转换”了它。
项目文件夹包含:

Main.sln
Main/Main.vcxproj
Main/Main.vcxproj.filters
Main/Main.vcxproj.user

根据 Winmerge 的说法,转换仅影响 Main/Main.vcxproj 中的两个值:
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
...
<PlatformToolset>v141</PlatformToolset>

变成
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
...
<PlatformToolset>v142</PlatformToolset>

有哪些选项可以为 VS2017 和 VS2019 维护大部分或所有这些项目文件的一份副本?

另外,我想知道:
  • 是否支持 .vcxproj 或 .sln 中的条件?
  • 有没有办法明确指向一个文件夹路径中的 .vcxproj 并且
    *.vcxproj.filters 和 *.vcxproj.user 在另一个?


  • 谢谢!

    最佳答案

    希望这会在以后对某人有所帮助。

    MSBuild supports conditionals defined within the .vcxproj files可以关闭可用的宏。我还发现可以通过在文件中进一步设置来替换值。

    This example讨论检查和设置 VisualStudioVersion 宏。

    我找到的解决方案使用 DefaultPlatformToolset 宏,VS2017 为 v141,VS2019 为 v142。

    Main.vcxproj 可以通过两种方式在条件中使用它:

    1) 在包含必要值的 PropertyGroups 周围使用选择、何时和其他标签:

    <Choose>
    <When Condition="'$(DefaultPlatformToolset)'=='v141'">
    <PropertyGroup Label="Globals">
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
    </PropertyGroup>
    <PropertyGroup Label="Configuration">
    <PlatformToolset>v141</PlatformToolset>
    </PropertyGroup>
    </When>
    <When Condition="'$(DefaultPlatformToolset)'=='v142'">
    <PropertyGroup Label="Globals">
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
    </PropertyGroup>
    <PropertyGroup Label="Configuration">
    <PlatformToolset>v142</PlatformToolset>
    </PropertyGroup>
    </When>
    <Otherwise>
    <PropertyGroup Label="Globals">
    <WindowsTargetPlatformVersion>$(DefaultWindowsSDKVersion)</WindowsTargetPlatformVersion>
    </PropertyGroup>
    <PropertyGroup Label="Configuration">
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    </PropertyGroup>
    </Otherwise>
    </Choose>

    2) 设置 PropertyGroups 的 Conditional 属性:
    <PropertyGroup Label="Globals">
    <WindowsTargetPlatformVersion>$(DefaultWindowsSDKVersion)</WindowsTargetPlatformVersion>
    </PropertyGroup>
    <PropertyGroup Condition="'$(DefaultPlatformToolset)'=='v141'" Label="Globals">
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
    </PropertyGroup>
    <PropertyGroup Condition="'$(DefaultPlatformToolset)'=='v142'" Label="Globals">
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
    </PropertyGroup>

    另一种方法可能是使用每个 Visual Studio 版本的 .sln 文件和 $(SolutionFileName) 宏的基本条件。
    <Choose>
    <When Condition="'$(SolutionFileName)'=='Main_VS2017.sln'">
    ...
    </When>
    <When Condition="'$(SolutionFileName)'=='Main_VS2019.sln'">
    ...
    </When>
    </Choose>

    关于visual-studio - 如何在 Visual Studio 2017 和 Visual Studio 2019 之间为每个项目引用一份 vcxproj.filters 和 vcxproj.user 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920244/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com