使用LibGit2Sharp调试时遇CLR无效程序错误求助
解决LibGit2Sharp调试时CLR“无效程序”错误的可行方案
检查LibGit2Sharp版本与调试架构匹配
确保安装的LibGit2Sharp NuGet包版本和项目调试目标架构(x86/x64/Any CPU)完全匹配。调试模式下Any CPU可能自动切换到32位,而LibGit2Sharp的原生依赖若只支持64位,就会触发CLR加载错误。右键项目→属性→生成,强制设置目标平台为x64(或对应LibGit2Sharp的架构),同时取消“首选32位”选项。清理并重新生成LibGit2Sharp原生依赖
调试模式下可能存在原生库(如libgit2-xxx.dll)缓存或版本不匹配的问题,按以下步骤操作:- 删除项目目录下的
bin/Debug和obj/Debug文件夹 - 在NuGet包管理器中卸载LibGit2Sharp,再重新安装对应版本
- 安装完成后,确认
bin/Debug/runtimes目录下存在对应架构的原生库文件
- 删除项目目录下的
禁用调试时的“仅我的代码”选项
打开Visual Studio的工具→选项→调试→通用,取消勾选“启用仅我的代码”。部分场景下,LibGit2Sharp的内部原生调用会被CLR调试机制误判为无效代码,禁用该选项可避免这种误触发。检查调试器的JIT优化设置
调试模式默认关闭JIT优化,但如果手动修改过项目属性可能导致异常。右键项目→属性→生成→高级,确保“调试信息”设为“完整”,同时未勾选“启用优化”选项。替换为LibGit2Sharp的预编译调试版本
若当前使用的是Release版本的LibGit2Sharp NuGet包,尝试下载并引用官方提供的调试版本包(包含pdb符号文件)。调试版本的原生库保留了调试信息,能减少CLR加载时的校验错误。
内容的提问来源于stack exchange,提问作者Mohan Chandra
相关产品推荐
相关产品推荐

