无法从Visual Studio运行控制台应用程序:System.AccessViolationException

时间:2015-12-10 17:34:17

标签: c# .net console-application

描述

启动任何控制台应用程序时,代码会立即停止在AccessViolationException上运行(附加信息:尝试读取或写入受保护的内存。这通常表示其他内存已损坏)。更多信息包含在下一节中。

技术症状

调用堆栈仅包含外部代码:

  

异常:抛出:“消息过滤器指示应用程序正忙。>(HRESULT异常:0x8001010A(RPC_E_SERVERCALL_RETRYLATER))”(System.Runtime.InteropServices.COMException)   抛出了System.Runtime.InteropServices.COMException:“消息过滤器指示应用程序正忙。(HRESULT异常:0x8001010A(RPC_E_SERVERCALL_RETRYLATER))”   时间:12/10/2015 10:59:55 AM   螺纹:vshost.NotifyLoad [15344]

我创建了一个新的控制台应用程序,只包含Console.WriteLine(“Hello world!”);

运行新的Hello world应用程序会导致相同的异常并且相同 调用堆栈。

背景

我怀疑这与问题无关,正如我将解释的那样,但我觉得回答一个显而易见的问题很重要,“当问题发生时你在做什么?”我做的最后一个更改是将我的Selenium Driver添加到应用程序的热键注销:

    public static void logout(this IWebDriver Driver)
    {
        Driver.FindElement(By.TagName("body")).Click();
        new Actions(Driver)
            .SendKeys(Keys.Control + Keys.Shift + "x")
            .Perform();
    }

我还在我的App.Config文件中对我的一个项目进行了更改,但是还原它也没有任何影响。

删除此代码(驱动程序扩展和/或App.Config更改)无法解决此问题。检索先前的签到不能解决问题。我是目前唯一正在研究此解决方案的人。

发现

如前所述,这是一个空的控制台应用程序。 Windows窗体应用程序启动正常。单元测试项目也很好。

研究

我花了好几个小时研究这个问题。似乎我所研究的每个类似问题都与仅调试或.NET版本相关。对我来说,问题也出现在Release上。此外,我一直在使用.NET 4.5,没有任何问题或更改。我找不到任何看起来值得发帖的文章,但我可能会忽略一些东西。

Visual Studio信息

Microsoft Visual Studio Ultimate 2013 版本12.0.30501.00更新2 .NET版本4.6.00081(只是注意到它在我的项目属性中说4.5) 以管理员身份运行

反馈

从devenv.exe / SafeMode运行时,Visual Studio 已加载

构造此框架的内容时遇到异常。此信息也记录在“C:\ Users \ UserName \ AppData \ Roaming \ Microsoft \ VisualStudio \ 12.0 \ ActivityLog.xml”中。

  

异常详情:   System.UnauthorizedAccessException:拒绝访问。 (HRESULT异常:0x80070005(E_ACCESSDENIED))      在Microsoft.VisualStudio.Shell.Interop.IVsShell5.LoadPackageWithContext(Guid& packageGuid,Int32 reason,Guid& context)      在Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame.GetPackage()      在Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame.ConstructContent()

此外,在尝试运行时,我收到错误消息“尝试运行项目时出错:无效指针”(再次,devenv.exe / SafeMode中的VS - 如果不熟悉,请参阅how to run visual studio without plugin and all third party feature

如果我可以提供任何其他信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

这可能是因为当你命名项目时你不能放置空格,我把它们放在一起,它给了我一个AccessViolationException,尝试用大写字母分隔你的单词,但只使用字母而没有空格来确定。 / p>

答案 1 :(得分:0)

我还遇到了Visual Studio 2010的这个问题。更有趣的是,我在我的解决方案中有几个项目(控制台应用程序,WPF应用程序,Windows窗体应用程序),但只有在我设置类型为&的项目时失败了。 #34;控制台应用程序"作为启动项目。以下更改最终帮助我确定了问题:转到控制台应用程序项目的项目属性 - >转到"调试"标签 - >转到"启用调试器"右侧窗格中的部分 - >检查"启用非托管代码调试"复选框如下面的快照所示。我为什么还不知道为什么会发生这种情况的根本原因。我观察到的唯一不足之处就是前一天晚上我的机器上安装了很多Windows更新,主要是办公室更新和操作系统更新(十几篇文章)。

enter image description here