【C#】调试问题汇总


一、调试问题

1、System.Reflection.TargetInvocationException 调用的目标发生了异常

这个错误是在没有加上try catch捕捉异常前,跳转到了Main()函数里报错。


加上异常捕获后,报System.Threading.ThreadAbortException:正在中止线程:
解决方案:

2、未加载mscorlib.pdb/System.Reflection.TargetParameterCountException 未经处理的异常在mscorlib.dll中发生/参数计数不匹配

delegate声明处的参数数量一定要与调用时传入的参数数量一致!
这个问题编译阶段不会出现编译错误,但运行时就报错了,一定要注意。

http://blog.sina.com.cn/s/blog_6b6bf63d0102y2r8.html

3、无法修改“xxx”的返回值,因为它不是变量

1、C#:struct的陷阱:无法修改“xxx”的返回值,因为它不是变量

https://blog.csdn.net/u012169685/article/details/48317577?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

2、无法修改"List.this[int]"的返回值,因为它不是变量

https://blog.csdn.net/Anfeng0228/article/details/80083522

4、当前上下文中不存在名称InitializeComponent

打开当前控件.Designer.cs文件,第一行的namespace名字是否与控件窗口名字一致

5、LC.exe”已退出,代码为 -1

在VS解决方案资源管理器里,把项目文件夹下Properties文件夹下的licenses.licx文件删除,重新编译。

https://jingyan.baidu.com/article/b24f6c822592b686bfe5daac.html

6、CLR无法从COM上下文 0x622b440转换为COM上下文 0x622b5b0

https://blog.csdn.net/zy19901021xy/article/details/84855231

7、未能写入输出文件“...\obj\Debug\xxx.exe”--“另一个程序正在使用此文件,进程无法访问

如果是偶尔产生的,那么手动删除项目里的obj文件夹,再重新生成即可。

如果伴随警告 “xxx.cs”中的类型与“x.exe”中导入的类型“xxx”冲突。请使用“xxx.cs”中定义的类型,且项目中每个类都如此提示,那么应该是因为在“引用”中引用了项目本身,从引用中册除对所在项目的引用就可以了,同时可以解决错误和警告。

8、MSBuildToolsPath is not specified for the ToolsVersion解决办法

解决办法:32位的机器:在注册表中找到以下注册项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild,删掉以下东西
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\14.0                         
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\TOolsVersions\14.0
    如果是64位的机器,还需要找到以下注册项:
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild
    删掉以下东西
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\14.0                                     HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0
    重新启动IDE,就恢复正常了。

9、不安全代码只会在使用 /unsafe 编译的情况下出现

解决方案资源管理器,在项目上右键-->属性-->生成-->勾选 允许使用不安全的代码

10、属性不可作为 ref 或 out 参数传递

(1)为什么在C#中属性不可作为 ref 或 out 参数传递?

https://bbs.csdn.net/topics/350262475

(2)C#中使用ref 和 out 的一点认识

二、编译器操作

1、打开.sln文件加载项目失败

点击确定后提示缺少.csproj文件。

重新生成解决方案:

2、VS2013设置类或函数前不显示引用的数量

找到菜单栏: 工具 ---> 选项  ---> 文本编辑器 ---> 所有语言 ---> CodeLens

设置取消启用CodeLens,并保存。

3、引用程序集带有黄色叹号

一般是版本不对应。操作:

https://blog.csdn.net/qq_41135605/article/details/83107886

4、VS3013如何查询该项目是什么样工程类型

解决方法:

在.vcproj文件中搜索Keyword。


MFC Application : MFCProj
MFC DLL: MFCDLLProj
Win32: Win32Proj

控制台程序:

用记事本打开.vcproj或.vcxproj文件,在里面查找subsystem。

5、VS2008 在文件中按 Ctrl + F 查找,不弹出查找框

选择窗口的重置窗口布局。(大概是弹出的窗口被别的挡住了)

6、工具箱被隐藏

ctrl+alt+x

7、窗体设计器双击打不开

首先把该窗体对应的.cs文件关闭,再双击窗体设计器即可。

8、代码行无法折叠及ctrl+鼠标左键无法跳转到定义的问题

都需要联机安装插件。

(1)代码行无法折叠
    在 Visual Studio 的菜单栏中,选择 “工具(T)”。
    然后选择 “拓展和更新(U)…” 选项卡。
    然后选择 “联机” 选项卡。
    再选择 “Visual Studio 库” 选项卡。
    排序依据保持默认 “最常用”即可, 在右侧搜索栏中搜索 “c# outline 2013” 插件。
    根据提示, 下载安装, 重启之后即可使用 “Ctrl + 鼠标左键” 实现快速查找函数变量类。

(2)ctrl+鼠标左键无法跳转到定义
    操作相同,搜索插件Go To Definition

9、扩展“C# outline 2013”需要的 .NET Framework 版本没有安装的问题

https://blog.csdn.net/wnk1997/article/details/111900945

补充一下,改完那个文件后,是直接双击CSharpOutline.vsix文件开始安装,而不是到VS里安装。

10、Visual Studio无法登录账号

(1)VS2015

提示Microsoft Edge浏览器版本过低。

工具 >> 选项 >> 环境 >> 账户 >> 使用以下方式添加账户并重新进行身份验证 >> 选择  系统Web浏览器。

(2)VS2017

提示脚本错误。我电脑浏览器一直用火狐,没有升级IE浏览器。

网上说在那个提示到期的弹框弹出来之前点击

帮助>>发送反馈>>报告问题

在弹出的界面上就可以登录。

但我这样操作直接跳转到了官方网页登录界面,并不是弹窗。

最终还是升级了下IE浏览器。

IE11下载安装

重启生效。

11、VS2013无法折叠所有方法

本来是 右键---大纲显示---折叠到定义,就可以折叠所有方法。

但不知道为什么突然失效。

只有快捷键 ctrl+m+o 可以折叠所有到namespace那层去了。

勉强实现,但还是麻烦(要从namespace展开再翻找)。

网上什么去工具箱设置的方法都别折腾了,解决不了。

直接到控制面板程序卸载里找到VS2013右键开始修复就能用,就是比较耗时,一个小时左右。

相关