在同一项工作中,在VC ++ 2010和VC ++ 2008中无缝开发?

时间:2009-10-27 21:20:16

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

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

编辑:我曾建议在办理登机手续或构建时使用脚本或工具“合并”项目文件。遗憾的是,VC ++项目文件格式已从VS2008更改为VS2010,并没有任何共同之处。所以我的问题更像是:有没有能够在vc9和vc10项目文件之间进行合并/转换的工具?如果没有其他方法可以解决这个问题,我可以编写自己的工具。< / p>

9 个答案:

答案 0 :(得分:6)

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

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

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

我希望它有所帮助。

答案 1 :(得分:6)

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

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

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

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

由于:
 1.所有选项和配置都可以在文件中读取,而不是在许多属性面板中读取  2. CMake语法和语法易于阅读  3.所有生成的项目都是完整的,与CMake无关  4.您可以在CMake文件上使用源控制管理器。

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

答案 2 :(得分:2)

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

我不知道VS2010中的项目变化是否会比以前更好或更差!

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

当VS 2008问世时,我确实做到了这一点,而我们正在评估它,而其他团队正在使用VS 2005.我不想提交任何新的格式项目文件,因为它会破坏它团队的其他成员,所以我在ruby中编写了一个小脚本,只搜索了所有.vcproj个文件,并将它们重命名为_2008.vcproj。我也为.sln文件执行了相同的操作,但也在.vcproj文件中搜索了对sln的引用,并将其重命名为_2008.vcproj,以便它引用新项目

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

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

答案 8 :(得分:0)

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