【c#基础】VS使用技巧

1:当我们用vs开发的时候,有时候遇到vs内置的库方法不清楚怎么个用法 可以把鼠标放在不了解的方法上 然后按F1键就会跳转到这个方法相应的MSDN文档上

二:查看源码方式

1:使用反编译工具

2:vs2017到最新IDE 支持反编译源码  F12查看源码vs设置步骤

1)工具-》选项=》文本编辑器-》c#->高级-》勾选支持导航到反编译源

 3:使用Resharp

三:使用VS技巧

1):vs都有智能提示,当我们要看被智能提示挡住的代码是,可以按住ctrl。Ctrl+空格可以调出智能提示框。

2):我们使用相应的微软自带的方法或关键字及编译错误,不清楚用法或意思时,可以将光标指定到我们要看的地方 按F1就可以调出MSDN文档--集成了MSDN帮助。

现在微软的.Net编译平台是--Roslyn。集成了编译器管道功能,语法分析、语义分析、绑定和代码输出。基于此重写了VS集成工具。代码编辑器、智能感知和重构都基于.Net编译器平台。

3):当我们需要命令和功能时,不知道需要的菜单或工具栏按钮在哪里,就可以

在右上角的搜索栏输入我们要查找的菜单或工具栏或命令。就会列出来

 4):改变解决方案正在使用的框架版本方法。

方法一:右击项目 并选择该解决方案的-"属性"-”目标框架“ 修改自己所要框架版本。

 方法二:在创建项目的时候选择自己所要的目标框架。

 注意:在.Net Core中 js库不再Nuget服务器中使用,用NPM,Bower等。

5)使用代码片段

如:在控制台要输入Console.WriteLine()可以直接输入cw+按两次Tab键

微软自带的代码片段有 

1:快捷键:do、for、forr、foreach和while

2:使用equals来实现Equals方案

3:使用attribute和exception来创建Attribute和Exception派生类。

选择工具(Tools)|代码片段管理器(Code Snippets Manager)就可以查看所有可用的代码片段。也可以创建自定义代码片段--可以拷贝一份然后仿造格式 写入自己的代码就可以了。放在同一个位置。

可以使用XAML的代码片段:代码片段可以在:https://archive.codeplex.com/获取。

 调试:

可执行代码一般不包含这些名称--编译器有哦那个内存地址代替了变量名称。

编译器在编译发布代码时自动忽略可以用预处理指令,在结合使用Conditional特性(条件编译)。就可以实现。

VS会自动提供两种配置:调试(debug)和发布(release)。

调试:这种配置通常指定编译器不优化编译过程,可执行文件应该包含额外的调试信息。

编译器假定调试预处理器指令Debug是存在的,除非源代码中显式使用了#undefined Debug指令。

发布:这种配置指定编译器应优化编译过程,可执行文件不应包含额外的调试信息,编译器不应假定源代码包含特定的预处理器符号。

当然 还可以自定义配置,但是我们很少用。

 四:调试代码

通常我们比较常用的就是设置断点。

在循环中我们也可以设置循环中断,有些我们可能就是一个个循环这样很麻烦。

但是我们可以设置 一定的条件当条件成立的时候 循环才会命中到断点。

4.1:监视和修改变量

需要连续查看变量的值。可以使用Autos、Locals和Watch窗口检查变量的内容。

Autos(自动窗口)--监视在程序执行过程中离断点最近的几个变量。

Locals(局部变量)--监视在程序执行过程中当前断点所子啊方法内可访问的变量。

Watch(监视)--监视在程序执行过程中显示指定名称的任何变量。可以把变量拖放到Watch窗口中。

这些只有进入 调试模式 这些窗口才是可见的。

 目前有4个不同的窗口 除了上面三个 还有一个就是及时(Immediate)窗口,及时窗口可以输入并运行代码。

这些4个窗口都可以查看和修改变量的值,所以不必离开调试器就可以尝试改变程序的不同路径。

5:调试异常

我们在发生异常的时候代码已经离开抛出了异常的方法。所以我们只能看异常的信息,来知道那边出错了,但是存在很多throw语句,我们应该如何调试判断抛出异常的是那条。

菜单栏-》调试-》窗口-》异常设置,可以配置调试器中断处的异常类型。

该窗口中可以指定抛出异常后执行什么操作。例如,可以选择继续执行,或者停止执行并启动调试--此时程序将停止执行,调试器将在throw语句位置启动。

 这个对话框的好处在于运行根据抛出异常的类型选择相应的操作。例如,可以配置为在遇到.Net基类抛出的任何异常时进入调试器。但对于其他异常类型则不进入调试器。

也可以添加自己自定义的异常。点击对话框的”+“号进行添加。

6:多线程

在调试多线程时,必须 理解在调试器中运行与不再调试器中运行时,程序的行为会发生变化。

遇到断点时,Visual Studio会停止程序的所有线程,所以此时有机会查看所有线程的当前状态。

可以在调试-》窗口-》线程 查看线程的情况,包括 任务的状态、位置、任务名、任务使用的当前线程、所在的应用程序域以及进程标识符。

 在线程的显示栏默认只显示几列,但是可以将我们要显示的列展示出来。

 七:重构工具

vs重构工具提供一下功能

1:重命名方法、局部变量、字段

2:从选定代码中提取方法

3:基于一组已有的类型成员提取接口

4:将局部变量提升为参数

5:重命名参数或修改参数的顺序

8:诊断工具

应用程序时间线(Application Timeline) :提供UI线程的信息,以及解析、布局、渲染、I/O和应用代码所花的时间。根据所花的最多时间,可以确定优化在哪里是有用的。

内存使用率:收集.Net内存分配信息有助于找出内存泄漏的地方,以及哪种类型的对象需要多少内存。资源争用数据对分析线程有帮助,能够很容易地看出不同的线程是否会彼此阻塞。

CPU使用率,说明哪些函数占用最长时间的热路径(hot path),以及使用最多CPU时间的函数的排列列表。从这些函数只能用的时间,有助于确定哪些方法的性能值得关注。

在函数内单机,就会显示该函数的详细信息。

 9:Concurrency Visualizer

Concurrency Visualizer 用于分析应用程序的线程问题。

vs2015 可以通过工具-》扩展和更新 下载并安装Concurrency  Visualizer 

在该屏幕中,可以比较应用程序需要的cpu资源与系统的整体性能。还可以切换到Threads视图,查看正在运行的应用程序线程及其在各个时间段所处状态的信息。切换到Cores视图会显示使用了多少CPU核心信息。

如果应用程序只使用了一个cpu核心,并且一直处于繁忙状态,那么通过添加一些并行功能,使用更多的cpu核心,可能会改进性能。

在不同的时间,可能看到不同的线程处于活动状态,但是在给定的时间点,只能有一个线程处于活动状态。这种情况中,可能需要修改锁定行为。还可以查看线程是否使用了I/O。如果多个线程的I/O使用率都很高,那么磁盘可能是瓶颈,导致线程都在等待彼此完成I/O

此时可能需要减少执行I/O的线程数,或者使用一个ssd磁盘。

10:Code Metrics

Code Metrics:代码度量。可以知道代码的可维护程度。

VS自带的代码度量会显示出嗲吗的可维护度指数,以及包含每个类和方法的细节。

红色(0-9):表示可维护程度低。

黄色(10-19):表示可维护程度中等:

绿色(20-100):表示可维护程度高。

Ctclomatic Complexity列提供了不同的代码路径的反馈。更多改吗路径意味着需要对每个选项进行更多的单元测试。

Depth of Inheritance 列:反应了类型的层次。基类数越多,就越难找出某个字段属于哪个基类。

Class Coupling 列:表明了类型的耦合程度。例如用于参数或局部变量。 耦合程度越高,意味着越难维护代码。

Server Explorer窗口:

在该窗口的Servers部分中,可以找到服务运行的情况的信息,创建新的性能计数,访问事件日志。

 调试器符号:

在调试过程中,经常需要查看变量的值,这时使用的是它们在源代码中的名称。

问题是可执行代码一般不包含这些名称--编译器用内存地址代替了这些变量名称。

.Net在一定程度上改变了这种情况,使程序集中的某些项以名称的形式存储。但是这只适用于

少量的项(例如公有类和方法),而且这些名称在JIT编译器程序集后也仍然会被移除。

如果让调试器先释变量Height的值,但是编译器在查看可执行代码时只看到了地址,

而没有看到任何对名称Height的引用,自然就得不到期望的结果。

为了正确地调试,需要在可执行文件中提供一些额外的调试信息。这些信息包含变量名和代码行信息,允许调试器确定可执行机器汇编语言与源代码中的哪些指令对应。但是不应在发布版本中包含这些信息。调试信息会增加可以执行文件大小。

原文地址:https://www.cnblogs.com/SignX/p/11129794.html