【问题标题】:How exactly does "Visual Studio Version Selector" chooses a Visual Studio version?“Visual Studio 版本选择器”究竟是如何选择 Visual Studio 版本的?
【发布时间】:2012-06-14 23:15:06
【问题描述】:

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

我会说它是这样工作的:

  1. 如果它在给定文件中发现任何提示应该使用哪个版本,那么它会使用它。例如,.sln 文件的顶部有这样的内容,因此版本选择器可以决定:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010
  1. 如果它没有找到任何提示,它将使用后来安装的任何版本(在我的情况下,我在我的 PC 上已经安装了 2012 之后重新安装了 2010 SP1,现在我认为 VS2010 比 2012 更频繁地打开,但不是100% 确定)。

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

【问题讨论】:

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

标签: visual-studio


【解决方案1】:

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

代表VS版本2008/2010/2012/01/20/201/2012/2008/2010/2012/2012/07023 /2022

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

【讨论】:

  • 您可以使用保留 UTF-8 签名(也错误地称为“字节顺序标记”)的文本编辑器来编辑 .sln 文件。如果 UTF-8 签名不存在,版本选择器将忽略文件的内容,只使用最新版本打开它。我刚刚在我们的一个“损坏的” .sln 文件上尝试了这个 - 就像一个魅力。在记事本2中打开它,以“UTF-8签名”格式重新保存=>再次工作。无需使用 VS 重新保存。请参阅stackoverflow.com/questions/2804759/… 的已接受答案
  • @PaulGroke - byte order mark (BOM) 是 UTF-8 signature 的专有名称。碰巧UTF-8只有一个字节顺序。但是 UTF-16 有 2 个字节顺序。见:en.wikipedia.org/wiki/Byte_order_mark
  • @awe - 不要忘记使用CRLF(Windows 风格的行尾)保存文件,而不仅仅是LF(Unix 风格的行尾)。
  • @Jesse Chisholm AFAIK U+FEFF 的正确名称是“零宽度无间断空间”。至少我能找到的 U-FEFF 的每个字符描述条目都使用该名称。应该更新维基百科;)并且使用旧的/替代名称“字节顺序标记”,当不指示字节顺序时,我觉得很奇怪。
【解决方案2】:

.sln 文件必须是 UTF-8-BOM 文件,并且必须像这样开始:

[blank line]
Microsoft Visual Studio Solution File, Format Version XX.XX[XXX...]
[description]

[description] 是例如 VS 2012 的 # Visual Studio Express 2012 for Windows Desktop 或 VS 2017 的 # Visual Studio 15

第二行区分大小写,但第三行 (description) 不区分大小写。如果丢失,Selector 似乎启动了最新的 VS。

VisualStudioVersion 条目被忽略。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多