如何修复“应用程序无法启动”错误

Visual Studio博客

韦斯皮克

韦斯顿哈钦斯–Visual Studio Shell团队项目经理
简短的个人简历:我于2005年开始在微软实习,此后一直在Visual Studio工作。我目前是VS壳牌团队的PM。不,不是“隔离“或”集成“Shell,但它是VS IDE的核心——它是UI和服务。在担任当前职务之前,我是Visual Studio Express产品的SKU经理。在工作之外,我是狂热的足球迷喜欢冬季运动,总是喜欢吃一些优质的mac和奶酪。

介绍
所以,你坐在沙发上突然…顿悟了!您已经找到了几天来一直在处理的代码问题的解决方案!您启动Visual Studio,并没有使用新的VS实例来处理,而是出现了一个可怕的错误:“应用程序无法启动。”

形象
“好吧,今天早上工作得很好!”你说。“发生了什么!?”

我希望我能快速、简单、单行地回答为什么会发生这种情况,但与生活中的大多数事情一样,这并不是那么简单。有许多情况会导致IDE进入这种状态,这使得诊断这个问题变得非常简单。启动Visual Studio时,初始化代码会关闭并开始执行许多任务,例如读取窗口布局、导入保存的设置、加载许多.dll、创建主窗口、,等。如果这些操作中的任何一个遇到无法恢复的严重异常(这意味着VS无法正确初始化),则会引发错误,并向用户显示“应用程序无法启动”

现在,您可能会问,“好吧,您至少可以给我一些异常消息,让调试变得更容易,对吧?”不幸的是,没有。由于初始化线程上的托管到本机互操作,所有返回的代码都是HRESULT;它会丢失其错误上下文。我们正在为RTM研究一些替代方法,以提供更有意义的错误消息。

既然我已经给了你背景,如果你碰到这个怎么办?我们将从最常见的情况开始,至少对于Visual Studio 2010 Beta 2

问题
Visual Studio 2010 Beta 2,有两种简单的方法可以进入这种状态。 RTM的这两个问题都已修复幸运的是,Beta 2有一些变通方法。

  1. 第一个问题是从早期版本的Visual Studio导入非TrueType字体。这已经被布列塔尼在她身上报道过了优秀的博客帖子
  2. 进入这种状态的第二种方法是使用损坏的窗口配置文件,即保存IDE窗口状态的文件。如果你有浮动的,浮动的工具窗口(例如,将“解决方案资源管理器”拖到另一个监视器或显示“查找”对话框),最小化Visual Studio,然后从最小化状态关闭Visual Studio,下次启动时您将遇到此错误。 

变通方法
要解决这些问题,您需要重置设置文件。 注:IDE将重置为默认状态,并且所有自定义项都将丢失。如果您有要保存的自定义项,请复制当前设置.vssettings在“%USERPROFILE%DocumentsVisual Studio 2010设置“发送到另一个位置。 

如果您使用的是非Express SKU:

  1. “开始”菜单->“运行”(或使用Windows键+R以熟悉键盘)
  2. 类型“devenv/重置用户数据”.现在应该修复该问题。
  3. 如果要重新导入旧设置,请转到工具->导入和导出设置,选择“导入选定的环境设置并浏览到保存的.vssettings文件。

如果您使用Express SKU,您的步骤会有所不同:

  1. “开始”菜单->“运行”(或使用Windows键+R以熟悉键盘)
  2. 根据安装的SKU,键入以下内容:
    • 对于Visual Basic Express类型,“vbexpress/resetuserdata
    • 对于Visual C#Express类型,“vcsexpress/resetuserdata
    • 对于Visual C++Express类型,“vcexpress/resetuserdata
    • 对于Visual Wed Developer Express类型,“vwdexpress/resetuserdata

我们为RTM做了什么
如上所述,RTM已修复了这两个问题。此外,我们还添加了更好的回退场景,以便在出现问题时,IDE会尝试一些解决方案。

如果这不能解决问题呢?
上述解决方法应该可以解决大多数遇到此问题的用户,但如果您尝试过但没有成功,那么您还可以尝试其他一些方法:

  • 浏览这篇MSDN文章。这篇文章有点过时,但确实有一些其他原因和解决此问题的方法。
  • 一些用户已成功使用普鲁克蒙以查看Visual Studio正在尝试加载的内容。这不适合胆小的人,但可能有助于调试问题。
  • 分析活动日志。Sara Ford有一个发布如何做到这一点

如果您仍然遇到问题,最好的选择是将连接Bug这样我们可以进一步了解。为了帮助我们调试,请将以下文件附加到该错误:

  1. 您的窗口布局文件:文件将被命名为“设计_一些字符.winprf文件“低于”%APPDATA%微软VisualStudio10.0
  2. 您的设置文件:“当前设置.vssettings“低于”%USERPROFILE%DocumentsVisual Studio 2010设置
  3. 您的活动日志:在Visual Studio命令提示符中,键入“devenv/日志”.附加“%APPDATA%MicrosoftVisualStudio10.0ActivityLog.xml“到错误。

快乐编码!

韦斯顿·哈钦斯
项目经理–Visual Studio Shell团队

——————————————————————————————————————————————————————————

我们最近发现了另一个可能导致Visual Studio出现“应用程序无法启动”消息的原因。此问题已由修复。VS2010 RTM的NET框架团队,但如果您仍在运行RC1构建,您可能仍会遇到它。

当shell试图创建一个新的配置文件来存储VS设置时,就会出现问题。shell调用系统。IO路径。获取随机文件名()函数获取存储配置文件设置的新文件名。不幸的是,该函数抛出“找不到文件”异常。CLR团队的一位开发人员表示,“当代码在具有用户上下文的线程上运行时,如果该线程没有加载的[Windows]用户配置文件或具有临时[Windows]的用户配置文件,则会出现问题。在这种情况下,Windows无法访问我们试图请求的密钥容器,因为这些容器存储在用户配置文件中。”。例如,Windows启动临时用户配置文件的一种方法是从磁盘中删除用户的%UserProfile%文件夹下的所有文件和文件夹,然后使用该用户登录计算机。

没有简单的方法可以使用RC构建修复CLR代码,

有一种方法可以解决VisualStudio启动时出现的问题,但这可能是一种临时解决方案。VS在启动时调用GetRandomFileName()函数为VS配置文件生成新的随机名称。生成这样的文件名后,配置文件的名称和存储配置文件设置的文件的名称将缓存在Windows.index文件中。基本上,Windows.index文件只是来自(profile_name->profile_file)的映射。下次启动VS或需要配置文件时,将使用Windows.index文件中的文件名。因此,如果您遇到此问题,并且缺少%APPDATA%MicrosoftVisualStudio10.0Windows.index文件,您可以尝试在%APPDATA%MicrosoftVisualStudio 10.0文件夹中复制附加到此帖子的Windows.indexe文件,并且您应该能够启动VS。所附的Windows.index文件包含一些最常用的配置文件名称(Design、Debug、Design-FullScreen、Debug-FullScreen和NoToolWindows)的条目,但您稍后会遇到问题,下次需要未知名称的配置文件时,或者其他Visual Studio组件将调用System。IO路径。获取随机文件名。此外,如果Windows使用的是临时配置文件,一旦您注销计算机,Windows将删除临时配置文件文件夹,因此在下次登录时,您需要重新应用解决方法。如果您的Windows用户正在使用一个临时配置文件,您可能需要进行系统更改以防止这种情况发生(例如,重新创建用户、完全删除%UserProfile%文件夹等)

阿林·康斯坦丁
Visual Studio Shell团队开发

Windows.index

0条评论

讨论结束。

反馈usabilla图标