Visual studio 维护VC++;跨多个Visual Studio版本的项目?

Visual studio 维护VC++;跨多个Visual Studio版本的项目?,visual-studio,visual-c++,migration,project-organization,Visual Studio,Visual C++,Migration,Project Organization,我们有一个仅限Windows桌面的产品套件,它由几个.exe应用程序和(显然)这些应用程序之间相当多的共享库组成。大约有20个EXE应用程序,也可能有大约20个共享库,这些应用程序中的每一个都使用了一些(有些LIB非常具体,有些只是你的好的代码 目前,所有这些都驻留在VisualStudio2005解决方案中,并一起构建和发布。这很好,每个开发人员都可以编辑/查看/调试他需要的任何代码。在该产品套件上约有15个DEVS(混合C+/C++)。 现在问题来了 由于迁移压力(语言功能、新的第三方组件)

我们有一个仅限Windows桌面的产品套件,它由几个
.exe
应用程序和(显然)这些应用程序之间相当多的共享库组成。大约有20个EXE应用程序,也可能有大约20个共享库,这些应用程序中的每一个都使用了一些(有些LIB非常具体,有些只是你的好的代码<代码FUUTILLS。DLL )大多数代码是C++,一些C是.< /P> 目前,所有这些都驻留在VisualStudio2005解决方案中,并一起构建和发布。这很好,每个开发人员都可以编辑/查看/调试他需要的任何代码。在该产品套件上约有15个DEVS(混合C+/C++)。 现在问题来了 由于迁移压力(语言功能、新的第三方组件),将一些应用程序(read
.exe
项目)迁移到较新的visual studio版本变得越来越迫切。有些可能是VS2010(第三方依赖关系),有些可能是VS2015。还有一些我们还没有从VS2005迁移它们的资源(第三方限制以及时间/预算限制)

这意味着对于多个visual studio版本,必须存在多个共享的C++库。(与exe项目相反,这些项目只针对一个选定的VS版本进行构建/维护。)

现在问题来了 考虑到一组(内部)共享库需要为多个不同的Visual C++版本创建,并且对于所有开发人员都应该易于编辑和维护,我们如何保持Utils.vcproj(2005)、Utils.vcproj(2010)和Utils.vcproj(2015)的同步?

主要是为了避免手动维护项目中包含的所有文件,但也要考虑这些项目的项目设置/
[vs]props
设置


到目前为止,我们的想法是:

  • 只需接受3种不同解决方案中3个项目文件的烦人的三重维护(ugh.)
  • 使用一个
    vc..
    项目文件作为主项目,并自动(如何!)从中生成另一个
    vc..
    文件
  • 使用诸如……之类的工具??生成这些共享库项目。(这意味着为我们的开发人员引入一个国外配置工具)


如果希望避免在单独版本的Visual Studio中手动更新项目文件,则必须为项目提供一个主配置,该配置可以是一种或另一种。您列出的两个选项基本上是您的选项:

  • 使用一个项目版本作为“主版本”。在这种情况下,主版本必须是最旧的版本(在您的情况下是VS2005?)。VisualStudio具有将旧项目转换为新版本的功能。当您在较新版本中加载较旧的项目时,它会提示您升级。这个过程可以通过一些简单的脚本自动完成。使用
    devenv.exe/upgrade
    可以从中升级项目
  • 使用CMake/Premake/等。这些会增加一点开销,但支持新的平台和配置会轻松得多。如果添加新的开发工具对您的过程来说很麻烦,并且您只支持VisualStudio,那么第一个选项可能更合适

如果希望避免在单独版本的Visual Studio中手动更新项目文件,则必须为项目提供一个主配置,该配置可以是一种或另一种。您列出的两个选项基本上是您的选项:

  • 使用一个项目版本作为“主版本”。在这种情况下,主版本必须是最旧的版本(在您的情况下是VS2005?)。VisualStudio具有将旧项目转换为新版本的功能。当您在较新版本中加载较旧的项目时,它会提示您升级。这个过程可以通过一些简单的脚本自动完成。使用
    devenv.exe/upgrade
    可以从中升级项目
  • 使用CMake/Premake/等。这些会增加一点开销,但支持新的平台和配置会轻松得多。如果添加新的开发工具对您的过程来说很麻烦,并且您只支持VisualStudio,那么第一个选项可能更合适

谢谢。你能分享一下你是否有过类似的经历吗?在这种情况下,哪种跨平台工具最合适?我曾参与过使用cmake的项目,它通常对跨平台项目管理有好处(当然,这显然只是我的观点)。它的应用越来越广泛。我曾参与过另一个项目,它是在大约15个平台上编译的,跨越了MSVC的5个版本,都是手工更新的。实际上,我会一直把新类塞进旧文件中,以避免更新项目的痛苦。可怕的东西。为了获得最佳效果和理智:不要这样做。谢谢。你能分享一下你是否有过类似的经历吗?在这种情况下,哪种跨平台工具最合适?我曾参与过使用cmake的项目,它通常对跨平台项目管理有好处(当然,这显然只是我的观点)。它的应用越来越广泛。我曾参与过另一个项目,它是在大约15个平台上编译的,跨越了MSVC的5个版本,都是手工更新的。实际上,我会一直把新类塞进旧文件中,以避免更新项目的痛苦。可怕的东西。为了获得最佳效果和理智:不要这样做。