我的任务是维护 Visual Studio 2005 解决方案,但我只能访问 Visual Studio 2008。每当我尝试在 Visual Studio 2008 中打开旧解决方案时,IDE 都热衷于将解决方案转换为新版本。
在这个转换过程中到底发生了什么,有没有办法阻止它(因为我需要提供代码以便它可以在 2005 年打开)?
我的任务是维护 Visual Studio 2005 解决方案,但我只能访问 Visual Studio 2008。每当我尝试在 Visual Studio 2008 中打开旧解决方案时,IDE 都热衷于将解决方案转换为新版本。
在这个转换过程中到底发生了什么,有没有办法阻止它(因为我需要提供代码以便它可以在 2005 年打开)?
这是 2005 解决方案文件的开头:
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
这是2008年:
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
除此之外,你不应该改变任何东西(在我们的例子中它就是这样工作的)。
我的建议是你应该先备份项目,然后你应该运行 VS 2008 的迁移向导。当它询问你是否要查看迁移过程中更改的所有文件的报告时,选择是。它将显示在此过程中更改的文件列表。
在几乎所有情况下,更改的文件仅限于版本号更改的项目文件。但是,没有硬性规定不会改变任何其他内容,您不应该依赖这一点。恕我直言,最好的方法是检查“已更改”列表中提到的每个文件中的更改。
如果唯一更改的文件是项目文件,您应该能够轻松地在 VS 2008 中维护代码。当您需要重新部署时,只需将项目文件中的版本改回即可。
Jon Skeet 发表了一篇关于使 VS2008 解决方案与 VS2005 共存的帖子。
正如@Igor Brejc所描述的,解决方案文件的版本号会略有不同。但是,也对项目文件进行了一些更改。这些更改在本文中进行了描述,其中还有一个漂亮的 VS2005-VS2008 转换器应用程序可用:
+==========================+====================+==========================+
| Element | VS2005 | VS2008 |
+==========================+====================+==========================+
| Tools Version | absent | 3.5 |
+--------------------------+--------------------+--------------------------+
| Product Version | 8.0.50727 | 9.0.21022 |
+--------------------------+--------------------+--------------------------+
| Old Tools Version | absent | 2.0 (if converted) |
+--------------------------+--------------------+--------------------------+
| Target Framework Version | absent | 2.0 |
+--------------------------+--------------------+--------------------------+
| Bootstrapper | .NET Framework 2.0 | .NET Framework 2.0 (x86) |
+--------------------------+--------------------+--------------------------+
| Import Project | $(MSBuildBinPath) | $(MSBuildToolsPath) |
+--------------------------+--------------------+--------------------------+
上述链接中的应用程序会将 VS2008 解决方案中的解决方案和项目文件转换为 VS2005,反之亦然。
首先,据我所知,只有项目文件被更改。目前我遇到的情况,基本上只是改了版本号,插入了目标框架。您只需更改版本即可轻松将项目文件转换回来。
运行转换并使用差异工具比较项目文件(它们是 XML 文本文件),您将立即看到差异。