Visual Studio打开.xml文件时弹出记事本

11

今天早上,我正在愉快地为一个项目工作,该项目大量使用自定义 xml 配置文件。

突然间,每当我在“解决方案资源管理器”中双击 .xml 文件时,它就会在记事本中打开,而不是在 Visual Studio 中打开。

考虑到这可能是 Windows 文件关联造成的问题,我在资源管理器中右键单击文件,选择“打开方式” >> “选择默认值”,然后选择了“Visual Studio 2008”。

但问题仍然存在,现在当我从资源管理器中打开文件时,Visual Studio 会被打开,然后它会再次用记事本打开。

毋庸置疑,这非常令人沮丧,Google 帮助也不太管用。有其他人遇到过这个问题吗?你们是怎么解决的?

注意:

  • 这只发生在 .xml 文件上,其他文本文件(.config、.txt)可以正常在 Visual Studio 中打开。
  • 这与 Windows 文件关联无关,因为 Windows 正确地打开了 VS2008。这是一些内部与 Visual Studio 相关的问题。
  • 我还尝试了“工具” >> “选项” >> “常规” >> “恢复文件关联”。没有成功。
  • “工具” >> “选项” >> “文本编辑器” >> “文件扩展名”中没有任何内容。
  • 下面是我的 .xml 文件的“打开方式”菜单。你可以看到,“XML 编辑器”已设置为默认值。 alt text

我认为这个问题应该发布在http://superuser.com/上。 - raoulsson
3
在StackOverflow上标记[visual-studio-2008]的问题有4756个,而在SuperUser上只有31个。我认为这很明显表明编程工具相关的问题仍应该在StackOverflow上提出。 - Portman
6个回答

11

是的。Visual Studio文本编辑器似乎无法支持UTF-16 Unicode,因此会在外部编辑器中打开它。将XML文件使用“UTF-8”编码重新保存(记得同时更改xml声明从“UTF-16”到“UTF-8”,然后就可以了。


我也遇到了一个.log文件的相同经历。无论如何,VS都会在记事本中打开它。我使用记事本将其强制转换为UTF-8编码。现在它可以在VS中正常打开。 - Rob K

3

如果您进入“工具”>“选项”>“文本编辑器”>“文件扩展名”,这里是否有任何映射到记事本的内容?如果是,请将其删除,这样应该可以解决问题。此外,如果您在项目中有一个XML文件,可以右键单击它,选择“打开方式”,然后选择您的默认编辑器。

更新:请查看评论以获取其他尝试方法


默认编辑器目前设置为“XML编辑器”。然而,当我点击确定时,文件仍在记事本中打开。 - Portman
运行 %InstallPath%\devenv.exe /resetskippkgs 有帮助吗? - Shawn Steward
它没有。但是我只是卸载并重新安装了一下,这并不是太麻烦,然后它就自己纠正了。很奇怪。我会为你的努力点赞并接受答案。 - Portman
我不想卸载并重新安装,但我仍然遇到了同样的问题。我最初注意到这一点是因为我在从资源管理器中拖放xml文件到VS中。我正在尝试使用/resetskippkgs(希望它不会导致Coderush失败),但既然之前没有帮助,我应该尝试什么其他方法呢?注意:我也以管理员身份启动了VS(不仅仅是UAC,而是不同的Windows帐户),但仍出现了相同的行为,所以这一定是系统级别的VS设置而不是我的vssettings中的某些东西。 - jrwren
6
我找到了我的问题:显然,我打开的XML文件都是UTF-16编码的。Visual Studio可以很好地打开UTF-8编码的XML文件。我不确定为什么VS不能打开UTF-16文件,但我想我可以使用vim。 - jrwren
1
@ShawnSteward 建议尝试 %InstallPath%\devenv.exe /resetskippkgs 对我很有帮助。我的情况有些不同,我在 Visual Studio 2012 中有一个 MVC 4 项目,并且当我将 C# 类添加到模型文件夹中时,它会在记事本中打开。在启动 Visual Studio 后,如果我只是打开文件,它仍然会在记事本中打开,但是如果我删除它并创建一个新的,则会在 Visual Studio 中打开。由于我已经尝试创建了一个全新的项目,但仍然存在记事本问题,所以这真的是救命稻草。 - W3t Tr3y

2

我有同样的问题。尝试使用带编码的XML编辑器打开文件。这样我可以明确选择Unicode,成功地在VS中打开文件。保存文件后问题解决了。


我按照你的建议在VS 2017中以“XML(文本)编辑器带编码”的形式打开它,然后选择了“Unicode - Codepage 1200”以便正确打开。让它“(自动检测)”编码会导致每个其他字符都被转换成看起来像空格的东西。 - Robert Bernstein

0

我曾经遇到过与 .txt 文件类似的问题。 我尝试使用“打开方式...”从 VS 打开该文件,VS 确实打开了它,但每隔一个字符就会显示乱码。 当我将该文件保存为不同的代码页时,问题消失了。 虽然这仍然有点奇怪,因为原始代码页中的原始文件副本可以通过双击在 VS 中正确打开并正确显示。


0
我认为“每隔一个字符显示垃圾内容”的问题是由于该文件被保存为Unicode格式,但在编辑器中被视为非Unicode格式所导致的。

没错。很可能保存为UTF-16编码,但被解释为(未编码的)ASCII或UTF-8。 - Chris Walsh

0

我在使用VS Express 2012 for Windows Desktop时遇到了类似的情况,升级后*.js文件无法正常运行。尝试运行:

rmdir /s /q  %LOCALAPPDATA%\Microsoft\WDExpress\11.0\ComponentModelCache

重新启动VS解决了这个问题。


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