如何将 Visual Studio .NET 2008 解决方案转换为 Visual Studio .NET 2005?

3
假设一个解决方案只包含类,并且这些类都是按照.NET 2.0规范编写的。如果该解决方案被打开、转换并在Visual Studio 2008中保存,是否可能稍后使用一些最小的修改打开该解决方案以在Visual Studio 2005中重新打开?
如何做到这一点?
是否有工具可以将2008年的.SLN文件“向下转换”为2005年的文件,如果解决方案中包含的所有类已经按照.NET 2.0规范编写?
6个回答

7

通常,你只需要在.SLN文件顶部更改版本号即可。

你的CS项目文件几乎也没问题,如果有问题,可以调整它们使其适用于2005和2008两个版本。

我们曾经使用过两个解决方案文件(05和08),共享同一组CS项目文件。

但请注意,你不能像这样在两个版本之间共享VC项目文件。

CS项目文件的“调整”如下:

在VS2008上创建的CS项目将包含以下行:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

如果使用VS2005,它会出现问题,需要将其更改为以下内容:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

后者将适用于2005和2008版本。

正如ggf31416在下面所说的那样,您可以使用一个工具来完成这个任务:http://www.emmet-gray.com/Articles/ProjectConverter.htm(也支持VS2010)。 - vgru

3
如果您在2008中没有使用任何“高级”功能,那么根据我的经验,唯一变化的是某些地方的版本号。可以手动编辑(我记得在文件顶部)。这至少值得一试。如果您使用了VS2008特定的功能(如设计师等),那么它可能不起作用,但对于简单的类库,我成功地做到了这一点。
您可能会对我之前写的关于VS2005和VS2008共存的博客文章感兴趣。

3

2
是的,如果您“降级”解决方案文件,则可以实现。
不,我不知道有这样的工具,我已经查过了。
您有三个选择:
1. 不要在2008中打开解决方案文件,从而永远不会升级它。 2. 不要在相同文件中混合客户端版本(即坚持使用2005或每个人都升级)。 3. 为2005和2008保留单独的解决方案文件,并确保所有相同的项目都存在于两个文件中。
感谢@Will Dean提醒我,项目文件确实可以共享。请注意,它们将被2008编辑器修改,但之后可以在2005中打开。

对于计算机科学项目来说,没有必要保持不同的项目,你可以在2005年和2008年之间共享它们。 - Will Dean
项目可以,解决方案文件不行。 - Russ
我曾经遇到这样一种情况,即在Visual Studio 2005中无法加载来自Visual Studio 2008的C#项目(而不是解决方案)。错误信息为:“未找到导入的项目“C:\Microsoft.CSharp.targets”。”。 - James

1

-2

没有直接的方法,如果你尝试的话,这是一个很高的要求。最简单的方法是创建一个新的2005项目并添加你的类。

首先:这些是你会看到的差异:

.csproj文件:(这些基于MSBuild模式)

(编辑)

  • ToolsVersion
  • ProductVersion
  • ProjectVersion

(删除)

  • OldToolsVersion
  • TargetFramework

.sln文件:(无模式)

  • 格式版本10.0

等等。


这不是真的。CS 项目 可以在两个版本之间共享。 - Will Dean
OP 问的是关于解决方案文件的问题。我在我的答案中添加了更多细节,告诉你为什么这很困难。(我从未说过这是不可能的。) - dirkgently

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接