"Visual Studio版本选择器"究竟如何选择VS版本?

Bor*_*ard 23 visual-studio

对于类似扩展.sln或.csproj默认应用程序是Microsoft Visual Studio版本选择器.我安装了两个版本,2010 SP1和2012 RC.该应用程序究竟将如何决定启动哪个VS?

我会说它的工作原理如下:

  • 如果它在给定文件中找到应该使用哪个版本的任何提示,那么它就会使用它.例如,在.sln文件的顶部有类似的东西,因此版本选择器可以决定:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010

  • 如果它没有找到任何提示,它将使用后来安装的任何版本(在我的情况下,我重新安装2010 SP1之后已经安装在我的PC上,现在我认为VS2010比2012年更频繁地打开但是不是100%肯定).

这是我的感觉,但具体规则是什么?

awe*_*awe 31

文件头中有一些版本信息.否则,文件资源管理器无法在.sln文件上显示带有数字的不同文档图标:

VS2008 VS2010 VS2012 VS2013 VS2015 VS2017 代表VS版本2008/2010/2012/2013/2015/2017的.sln文件

如果使用记事本或其他不保留UTF-8签名的文本编辑器编辑.sln文件,则图标上的此数字将消失(请参阅Paul Groke的评论).在这种情况下,版本选择器也无法选择正确的版本,您无法从文件资源管理器中打开它.您可以从Visual Studio中专门打开它并保存.sln文件以进行修复.有关此问题的更多信息,请参阅此内容.

  • 您可以使用保留UTF-8签名的文本编辑器(也错误地称为"字节顺序标记")编辑.sln文件.如果UTF-8签名不存在,版本选择器将忽略该文件的内容,只使用最新版本打开它.我只是在我们的一个"破碎的".sln文件上尝试了这个 - 就像一个魅力.在Notepad2中打开它,重新保存为"UTF-8签名"格式=>再次工作.无需使用VS重新保存.请参阅http://stackoverflow.com/questions/2804759/vslauncher-starts-wrong-version的已接受答复 (7认同)
  • @PaulGroke - `字节顺序标记` (BOM) 是 `UTF-8 签名` 的专有名称。碰巧的是,UTF-8 只有一种字节顺序。但是 UTF-16 有 2 个字节顺序。请参阅:https://en.wikipedia.org/wiki/Byte_order_mark (2认同)
  • @awe - 不要忘记用 `CRLF`(Windows 风格的行尾)保存文件,而不仅仅是 `LF`(Unix 风格的行尾)。 (2认同)

MHN*_*MHN 5

.sln 文件必须是 UTF-8-BOM 文件,并且必须以如下方式开头:

[blank line]
Microsoft Visual Studio Solution File, Format Version XX.XX[XXX...]
[description]
Run Code Online (Sandbox Code Playgroud)

例如,[description]适用# Visual Studio Express 2012 for Windows Desktop于 VS 2012 或# Visual Studio 15VS 2017。

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

该VisualStudioVersion条目将被忽略。

但是,为了显示正确的文件图标,[description]必须准确且区分大小写。