"Visual Studio版本选择器"如何精确选择Visual Studio版本?

26
对于像 .sln 或 .csproj 这样的扩展名, 默认应用程序是 Microsoft Visual Studio Version Selector 。 我安装了两个版本,2010 SP1和2012 RC。 这个应用程序将如何决定启动哪个VS?
我认为它的工作方式如下:
  1. 如果在给定文件中找到任何版本应该使用的提示,则使用它。 例如,在 .sln 文件的顶部,有类似于此的内容,因此Version Selector可以决定:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010
  1. 如果没有找到任何提示,它将使用后安装的版本(在我的情况下,我在已经安装了2012之后重新安装了2010 SP1,现在我认为VS2010比2012更常打开,但不确定是否100%正确)。

这是我的感觉,但确切的规则是什么?


2
未记录。但您可以安全地假设它使用文件中的版本号。 - Hans Passant
@HansPassant:不是我的系统上正在发生的事情:它本来是正确的版本,但当另一个版本重新安装了TFS插件时,那个版本的Visual Studio开始运行。 - Doug_Ivison
3个回答

37

文件头中包含了一些版本信息,否则文件资源管理器将无法在 .sln 文件上使用不同的文档图标并显示版本号:

VS2008 VS2010 VS2012 VS2013 VS2015 VS2017 VS2019 VS2022 表示 VS 版本 2008/2010/2012/2013/2015/2017/2019/2022 的 .sln 文件

如果你使用记事本或其他不能保留 UTF-8 签名的文本编辑器来编辑 .sln 文件,那么这个图标上的版本号会消失(参见 Paul Groke 的评论)。此时版本选择器也无法正确选择版本,你也无法从文件资源管理器中打开文件。你需要在 Visual Studio 中打开并保存 .sln 文件才能解决此问题。更多相关信息请参见 这里


7
您可以使用保留UTF-8签名(也被错误地称为“字节顺序标记”)的文本编辑器来编辑 .sln 文件。如果没有UTF-8签名,版本选择器将忽略文件内容,并只使用最新版本来打开它。我刚在我们的一个“损坏”的.sln文件上尝试了一下 - 效果很棒。用 Notepad2 打开它,重新保存为“UTF-8签名”格式 => 再次工作。无需使用VS重新保存。请参见 https://dev59.com/7HE85IYBdhLWcg3wYSZk 的被接受的答案。 - Paul Groke
2
@PaulGroke - “字节顺序标记”(BOM)是“UTF-8签名”的正式名称。恰巧,UTF-8只有一种字节顺序。但是UTF-16有两种字节顺序。请参见:https://en.wikipedia.org/wiki/Byte_order_mark。 - Jesse Chisholm
2
@awe - 别忘了用CRLF(Windows风格的换行)保存文件,而不是只用LF(Unix风格的换行)。 - Jesse Chisholm
据我所知,U+FEFF 的正确名称是“零宽度不间断空格”。至少我能找到的每个 U-FEFF 字符描述条目都使用这个名称。维基百科应该更新一下 ;) 而当不表示字节顺序时,使用旧的/替代名称“字节顺序标记”对我来说感觉很奇怪。 - Paul Groke

4
.sln文件必须是UTF-8-BOM文件,并且必须以以下方式开头:
[blank line]
Microsoft Visual Studio Solution File, Format Version XX.XX[XXX...]
[description]

[描述] 是指例如VS 2012的# Visual Studio Express 2012 for Windows Desktop或者是VS 2017的# Visual Studio 15

第二行区分大小写,但第三行的 description 不区分大小写。如果缺失,选择器似乎会启动最新的 VS。

条目 VisualStudioVersion 将被忽略。

然而,为了正确显示文件图标,[描述] 必须准确无误并且区分大小写


3

使用正确的 Visual Studio 版本打开您的解决方案。单击选择解决方案。单击文件 -> 保存 xxx.sln。


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