vsdbg在MacOS Ventura (intel)上似乎失败了



我已经升级到Intel上的MacOS Ventura,并且在调试器工作时遇到了麻烦。我使用的是Mac版Visual Studio 2022, 17.4.2(最新稳定版)。

复制:

  • 我创建了一个默认的macOS应用程序(Mac ->应用程序→net)。这是一个Cocoa应用程序,使用。net 7。
  • 点击"运行项目"。应用程序运行良好。
  • 单击"开始调试项目"。在应用程序输出选项卡中,我看到许可消息"您只能使用……",然后什么也没有。应用程序无法启动。没有更多的消息。

查看控制台-我可以看到这个消息:

/用户/保罗/Dev/DotNetMacOSTestProject/TestDotNet7/bin/调试/net7.0-macos/osx-x64/TestDotNet7.app/内容/MonoBundle/libmscordbi.dylib"(cs_mtime:1671400321.653023908 == mtime:1671400321.653023908)(signed:1 validated:1 infected:1 nx:0 wmapping:0 dirty:0 depth:0)

下面是以下消息:

聚合。变换:StabilityCrashNumerator3肮脏:1事件:com.apple.stability.crash{"coalitionName"com.microsoft.visual-studio"exceptionCodes":"0 x0000000000000032,0x00000001094f0000(n 50,n 4451139584n)EXC_BAD_ACCESSSIGKILL(代码签名无效)UNKNOWN_0x32 at0 x00000001094f0000"incidentID":"85 f597c2 - 48 - cc adea - 77 - 4 - c55 - d3e588fae9"logwritten": 0,"process":"vsdbg-ui"responsibleApp":"VisualStudio"terminationReasonExceptionCode":"0 x2","terminationReasonNamespace":">合作设计","timestamp" 1671400809131127}

所以…可能的合作设计。

将项目切换到。net 6,我看到相同的结果-应用程序运行正常,但无法调试。我重新安装了visual studio -同样的结果。我可以从命令行运行vsdbg-ui,它启动了。

你知道哪里出了问题吗?或者我能做什么故障排除。谢谢。保罗

问题是,如果你在Mac上运行vsdbg和vsdbg-ui(用于跨平台调试。net核心代码的底层可执行文件)需要用可信证书重新进行代码签名。

请查看我在Github上打开的问题。

github用户@basilfx发布了一个临时解决方案,可能会解决您的问题。

他的答案适用于VS代码,但你只需要找到在你的情况下使用的可执行文件,并应用相同的修复。

为了方便起见,我将在下面重申他的回答,但这里是他在Github问题中的评论链接


创建自签名代码签名证书:

  • https://stackoverflow.com/a/58363510/1423623
  • 导航到调试器文件夹(在我的情况下,~/.vscode/extensions/ms-dotnettools.csharp-1.24.4-darwin-x64/.debugger/x86_64)
  • 运行codesign——remove-signature vsdbg-ui &&codesign——remove-signature vsdbg
  • 运行codesign -s my-codesign-cert vsdbg-ui &&codesign -s my-codesign-cert vsdbg

如果你曾经更新你的Visual Studio要小心,因为它也可能会替换vsdbg/vsdbg-ui可执行文件的新版本,你必须重新应用修复,因为你的代码签名的可执行文件已被替换。

在这一点上,长期解决方案取决于微软。

编辑:另一种选择是强迫你的Mac停止执行"允许从App Store下载应用程序"one_answers"识别开发者";限制。

这是一个隐藏在系统参数设置中的选项->在Sierra和更早的版本中,隐私区域是可见的。

sudo spctl --master-disable

然后关闭任何已经打开的系统偏好设置应用程序,然后打开系统偏好设置->隐私→选项卡,你会看到现在有一个"Anywhere"选项下的"允许从:"下载应用程序"区域。

这有效地关闭了应用程序需要由开发人员签名的需要,所以这样做的风险由您自己承担!

相关内容

最新更新