【问题标题】:How to develop seamlessly in both VC++ 2010 and VC++ 2008 on the same work?如何在同一工作上同时在 VC++ 2010 和 VC++ 2008 上进行无缝开发?
【发布时间】:2010-12-10 15:55:58
【问题描述】:

我想将 VC++ 2010 项目与 VC++ 2008 项目同步。甚至可能吗?基本上,如果我在 VS2010 中将文件添加/删除/重命名到项目中,我希望将其添加/删除/重命名到相应的 VS2008 项目中。项目选项同步也很棒,但不是必需的。我也不需要解决方案级别的同步。

有人建议我在签入或构建时使用脚本或工具“合并”项目文件。可惜VC++工程文件格式从VS2008到VS2010都变了,没有任何共同点。

是否有能够在 vc9 和 vc10 项目文件之间合并/转换的工具?如果没有其他方法可以解决这个问题,我可能会编写自己的工具。

【问题讨论】:

    标签: visual-studio visual-studio-2008 visual-c++ visual-studio-2010 project-management


    【解决方案1】:

    您只能单独维护这些解决方案/项目文件。如果你要写你的插件,请告诉我!

    【讨论】:

      【解决方案2】:

      源代码控制在这里有所帮助。我以前通过升级(VS2010)分支并在它和主干(VS2008)之间来回合并更改来完成此操作。虽然肯定不是无缝的,但它确实有效。

      不知道VS2010的项目改动会不会比以前更好或更糟!

      【讨论】:

      • 这个项目是使用 TFS 进行源代码控制的,所以我对此非常感兴趣。但我不明白如何合并 .vcproj (2008) 项目和 .vcxproj (VC++2010) 之间的更改。我怎样才能做到这一点?
      • 您可以像在 TFS 下的任何其他文件一样合并两者之间的更改。
      【解决方案3】:

      我没有在工作中安装 2010,所以我主要是从记忆中来的。从 2005 年到 2008 年到 2010 年,项目文件架构几乎没有变化。在大多数情况下,我只是使用 WinDiff 或 BeyondCompare 等文本比较工具来突出显示更改并将它们从一个文件复制到另一个文件。我没有玩过任何网络项目类型,但我假设大多数情况下相同的技术会起作用。由于它们基本上是 XML 模式,因此您也可以使用 XML 映射工具来完成相同的工作。

      当我转换一个开源项目时,我确实注意到 2010 年确实不喜欢 ClickOnce 项目设置。它会很好地转换,但会要求我在以后每次打开项目时再次转换。我最终不得不从项目文件中完全删除 ClickOnce 信息以使其停止。

      编辑: 我的经验主要基于 C# 项目架构,随着时间的推移并没有太大变化。正如 TheSamFrom1984 所指出的,C++ 架构中有一些大的变化还没有进入MSDN documentation on version 10

      【讨论】:

      • 很遗憾,VC10 和 VC9 项目文件完全不同。
      • 我最近没有机会直接使用任何 VC++ 项目文件,但是 MS 发布的 XSD 架构表明结构没有变化。您看到的差异在哪里?
      • 例如,在 vc9 中使用 列出文件,在 vc10 中使用 列出文件。差异仅显示一个公共行:第一行。
      • 感谢您指出这一点。我刚刚注意到 MSDN 上已发布的 VC10 架构显示 Version="9.00";我可能应该第一次抓住它。当我可以访问它们时,我将不得不仔细查看实际的 XSD 文件。我也在编辑我的答案以注意差异
      • 如果您对 .vcproj 文件进行更准确的 diff(每个单词,在 WinMerge 中由空格和标点符号分隔或每个字符),是否可以识别可替换模式?
      【解决方案4】:

      Gallio OSS 项目是使用 VS2010 构建的,而大多数贡献者仍然使用 VS2008。为了使*.csproj 文件与*.vs2010.csproj 文件保持同步,我们使用了一个简单的PowerShell 脚本,该脚本针对每对项目文件运行WinMerge。没什么复杂的,但非常方便。

      您可以在Google Code 下载脚本。要运行它,只需键入以下命令:

      @echo off
      powershell "& './Compare VS2010 Projects.ps1' -sync %*"
      

      希望对你有帮助。

      【讨论】:

      • 对 c# 有帮助,但由于布局与 VC++2008 到 VC++2010 完全不同,因此无法合并 C++ 项目文件。好主意。
      • 嗯...我没有看到您谈论 VC++ 项目而不是 C# 项目。所以我不知道我的解决方案是否真的适用于你的场景。
      • 我认为这是最好的主意。现在我的问题简化为“如何在 vc9 和 vc10 项目文件之间“合并”。我可以自己用工具来做这件事。
      【解决方案5】:

      我相信这是将 VS2008 项目文件迁移到 VS2010 的命令行选项。所以一个选项是只维护 VS2008,并重新生成 VS2010 项目。缺点是

      • 无法进入 VS2010 特定项目选项
      • 对 VS2010 项目的任何更改都将被覆盖,并且不会合并回 VS20008。

      【讨论】:

      • 我想过,但我也需要做2010->2008
      【解决方案6】:

      Visual Studio 2010 支持多目标,这将允许您使用 VS2010 进行开发并将平台工具降低到 V9,以便您可以使用最新的工具来维护旧项目。为什么不这样做呢?

      它带有开箱即用的 VS2010 和 VS2008 for C++,这里有一些关于设置 VS2005 工具链的信息

      http://weblogs.asp.net/israelio/archive/2009/10/20/enable-vs-2010-multi-targeting-also-for-vs2005-c.aspx

      【讨论】:

      • 我相信这个想法并不是说可以使用不同的编译器版本来编译源文件,而是项目中的不同开发人员可以使用他们拥有(或更喜欢)的 2 个 IDE 中的任何一个.
      • 在过去,IDE 和编译器版本是紧密联系在一起的,所以用 VC8 编译需要 VS2k5,用 VC9 编译需要 VS2k8(我们现在办公室就有这个问题)。 VS2010 将允许每个人使用 VS2010 并且仍然下标到 VC9 或 VC8 而不是 VC10。我的意思是给每个人 2010 年,让他们降低目标而不是支持多个 IDE :)
      【解决方案7】:

      当 VS 2008 发布时,我正是这样做的,我们正在评估它,而团队的其他成员正在使用 VS 2005。我不想提交任何新格式的项目文件,因为那样会破坏它团队的其他成员,所以我用 ruby​​ 编写了一个小脚本,它只搜索所有 .vcproj 文件并将它们重命名为 _2008.vcproj 。我对.sln 文件也做了同样的事情,但也在sln 文件中搜索了对.vcproj 的引用并将其重命名为_2008.vcproj,以便它引用新项目。

      接下来,只需加载新的解决方案文件并让迁移向导完成它的工作(我假设 VS 2010 与旧版本一样有一个)。这使您可以并排运行两个版本。如果团队中的任何其他人对旧项目文件进行了任何更改,那么只需重新运行您的转换,然后向导应该只迁移更改的项目。

      您可能需要向脚本添加进一步的调整,即更改 vcproj 文件中的 OutputDirectoryIntermediateDirectory 字段,以便您也可以构建到不同的目录。如果这样做,则意味着您应该能够在同一源代码树上使用任一版本的 Visual Studio 进行构建。

      【讨论】:

        【解决方案8】:

        您应该将 VS2010 副本视为一个分支。每隔几天,在发生任何重大更改时(当然,待测试通过),将更改合并到另一个分支中。这是企业软件环境中广泛采用和接受的做法。

        【讨论】:

        • 再说一次,我不明白你是怎么做到的,因为你不能在 vc9 和 vc10 项目之间合并
        【解决方案9】:

        在我的公司,我们遇到了完全相同的问题并选择使用CMake

        至少在您的一个项目上尝试一下,它是您问题的理想解决方案。

        它允许在文本文件中用简单的语法描述我们的项目,然后 CMake 从相同的文件生成 VS2005、VS2008 和 VS2010 项目。
        这样只修改Cmake文件,同时更新所有项目。

        简而言之,CMake 是:
        1.干净
        2. 描述性
        3. 原生
        4.安全

        因为:
        1.所有选项和配置都可以在文件中读取,而不是在许多属性面板中。
        2. CMake的语法和语法通俗易懂。
        3.所有生成的项目都是完整的,独立于CMake。
        4. 您可以在 CMake 文件上使用源代码控制管理器。

        我们有一些 50 个或 20 个项目的解决方案,工作量很大,我们使用 CMake 的原因之一是因为我们需要在 Mac 上的一些库上使用 Xcode,这些库现在对于 VS 和Xcode。
        但即使对于不同版本的 VS,这也是值得的。

        【讨论】:

        • 这实际上是我已经解决的问题。谢谢。
        猜你喜欢
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-11
        • 2013-04-27
        • 1970-01-01
        相关资源
        最近更新 更多