启用本机代码调试时,AccessViolationException消失

时间:2013-11-16 14:54:38

标签: c# visual-studio-2012 google-drive-api .net-4.5 windows-7-x64

我在Windows 7 x64上的Visual Studio 2012中运行Google Drive API sample时得到AccessViolationException。我的项目针对的是.Net 4.5。我在第185行得到例外:

await service.Files.Delete(file.Id).ExecuteAsync();
  • 它发生在调试和发布模式以及所有平台(x86,x64,AnyCPU)中。
  • 当我在没有附加调试器的情况下运行时(“没有调试启动”),它不会发生。
  • 当我在项目属性中启用“启用本机代码调试”时,不会发生这种情况。

为什么启用本机代码调试可能会阻止异常?

注意:运行示例需要NuGet包(预发布):Google.Apis.Drive.v2


编辑:我希望谷歌的人会插话并告诉他们是否也看过这个,因为sample instructions说:

  • 使用Visual Studio
  • 打开Goog​​leApisSamples.sln
  • 点击Build>重建解决方案
  • 在Drive.Sample \ bin \ Debug
  • 中执行.exe

这很奇怪,因为他们直接从调试文件夹执行exe而不是只是说“运行示例”。

2 个答案:

答案 0 :(得分:5)

这只是一个黑暗的镜头,但我有一个类似的问题,原来是视觉工作室托管过程。
你可以禁用它,看看是否有任何变化。

您可以从项目属性>执行此操作调试>取消选中启用visual studio托管服务

enter image description here

答案 1 :(得分:0)

虽然项目完全不同,但我也有这个问题。对我来说,最初的问题是包装器库是一个.net 2程序集,我的应用程序是一个.net 4应用程序。当我将包装器更改为.net 4时,我开始获得stackunbalancedExceptions。

原因是因为DllImports的callconvention(也许是charset)属性设置不正确。一旦我修复了这个,我就不再在.net 4中得到任何例外,但是在将包装库编译为.net 2时我仍然得到它们。

可能有一个compat设置可以使它与混合2/4框架一起使用,但是因为我能够重新编译我还没有真正检查过。