这些选项从 Visual Studio 2017 Enterprise 版本 15.7 开始提供。 ? 启用事件和快照时,也默认启用异常发生时拍摄快照。...可以取消选中“在异常事件发生时收集快照”来禁用异常发生时拍摄快照 。 启用此功能后,可拍摄未处理异常的快照。 对于已处理的异常,只有在引发异常时且该异常不属于之前引发的异常的再次引发时才会拍摄快照。...“IntelliTrace”选项页上的所有设置都针对 Visual Studio 这个整体,而不针对单个项目或解决方案。...4、在项目中设置一个或多个断点并开始调试(按 F5),或通过逐步执行代码来启动调试(F10 或 F11) 。...查看快照时,Visual Studio 将附加到进程的分支副本。 对于每个快照,Visual Studio 仅复制页表并将页设置为写入时复制。
C# 8.0 引入了可为空引用类型和不可为空引用类型。由于这是语法级别的支持,所以比传统的契约式编程具有更强的约束力。更容易帮助我们消灭 null 异常。...当仅仅启用警告上下文而不开启可为空注释上下文,那么编译器将仅仅识别局部变量中明显可以判定出对 null 解引用的代码,而不会对包括变量或者参数定义部分进行分析。...,是不会引发程序异常的;而在后面调用了 ToString() 方法则会引发程序异常。...安全性警告仅会将编译期间可识别到可能运行时异常的代码进行警告(即下面的 walterlv.ToString()),而不会对没有异常的代码进行警告。...在源代码文件中开启可空引用类型的支持 除了在项目文件中全局开启可空引用类型的支持,也可以在 C# 源代码文件中覆盖全局的设定。
空引用异常是最常见的程序错误之一。微软昨天发布的VS2019对此有了非常贴心的改进,我们来看看吧!...string WorkType => "996"; public Girlfriend Girlfriend { get; set; } } 由于程序员是找不到女朋友的,因此直接输出女朋友的名字会引发空引用异常...但是VS 2019可以显示具体是哪个属性为空。 ? 要注意的是,这个功能并不是.NET Framework或者.NET Core的,因此脱离了VS2019就看不到这个精准空引用的异常信息了。 ?...在公司的大型项目里,空引用异常通常很难排查,当一个class有几十个属性,又嵌套了别的class的时候,报一个空引用异常,究竟是哪个属性为null,我们曾经要花很长时间debug,现在有了VS2019,...可以一眼就能知道空引用的位置,节约了程序员宝贵的时间,进一步远离996!
要在禁用 CPU 使用情况示例收集的情况下启动会话,请在性能探查器启动页中单击 CPU 使用情况工具旁边的设置(齿轮)图标,以显示 CPU 使用情况属性页,然后取消选中标记为“启用 CPU 分析(采样)...此堆栈数据和对象类型及大小信息一同进行分析,以显示应用程序的内存活动详情。 你可以快速确定代码中的分配模式并识别异常。...Visual Studio Web 工具 库管理器是 Visual Studio 2017 中包含的新功能。 有助于在 Web 项目中管理客户端端库。...通过清理项目,你可以回收保留的文件所占用的磁盘空间。 我们在 Visual Studio 2017 中添加了对 Xamarin.Mac 绑定项目的最低支持。...连接的服务 对于 Azure 函数项目的解决方案,现可直接通过 Visual Studio 2017 配置 Azure Functions 的持续交付。
这是我们添加一些新属性以允许您在编译器中进行可空分析影响的地方。 T?的问题 你想知道:为什么在指定可以用可空引用或值类型替换的泛型类型时“只”允许T?。不幸的是,答案很复杂。 通常T?...它们可以在接受输入的任何内容上指定: 值参数 in 标记的参数 ref 标记的参数 字段 属性 索引 要点:这些属性仅影响使用它们注解的调用者的方法的可空分析。...这个属性可以使您的代码异常复杂,所以小心使用它!...例如,一个异常帮助器方法,如果调用,它将引发异常;或者一个断言方法,如果输入为真或假,它将引发异常。 您可能希望做一些类似断言一个值是非空的事情,我们认为如果编译器能够理解的话,您也会喜欢它。...DoesNotReturn向编译器发出一个信号,说明在该点之后不需要进行可以为空的分析,因为代码是不可访问的。 当调用MyAssert并且传递给它的条件为false时,它将引发异常。
C#静态分析工具包括Coverity,CAT.NET和Visual Studio代码分析。 动态分析 动态分析工具在运行时分析代码,帮助你查找缺陷,如安全漏洞,性能和并发问题。...它分析运行时环境的上下文中的代码,因此其有效性受测试工作负载的限制。Visual Studio提供了一些动态分析工具,包括并发可视化器,IntelliTrace和分析工具。...正确性 代码审查,静态分析,动态分析,测试 代码不仅需要在语法上有效,而且必须按照开发人员的意图并满足项目需求。 功能 测试 测试验证代码是否满足要求,如正确性,可扩展性,鲁棒性和安全性。...如果你尝试访问一个空引用,以为它是一个对象的有效引用一样 - 例如,通过访问一个属性或方法,运行时将抛出一NullReferenceException异常。...静态和动态分析工具可以帮助你在发布代码之前识别潜在的NullReferenceException异常。在C#中,空引用通常由尚未引用对象的变量引起。对于空值类型和引用类型来说,Null是一个有效值。
可移植性分析器作为 Visual Studio Extension 提供,用于分析每个项目的一个程序集;也可以作为 ApiPort 控制台应用提供,用于按指定文件或目录分析程序集。...将项目转换为面向 .NET Core 等新平台后,可以使用基于 Roslyn 的 API 分析器工具来识别引发 PlatformNotSupportedException 异常以及其他兼容性问题的 API...它适用于 Visual Studio 2017 及更高版本。...若要在 Visual Studio 中分析整个项目,请在“解决方案资源管理器”中右键单击该项目,然后选择“分析程序集可移植性” 。...此部分包含由你的经过分析的程序集引用的程序集列表(此列表未经过分析)。 如果它是你自己拥有的程序集,请将其包含在 API 可移植性分析器运行过程中,以便你可以获得详细的 API 级别可移植性报表。
但是,若要使用 EnableNETAnalyzers 属性启用代码分析,则项目必须引用项目 SDK。 如果分析器发现规则冲突,则这些冲突会被报告为建议、警告或错误,具体取决于每个规则的配置方式。...代码质量分析 代码质量分析(“CAxxxx”)规则检查 C# 或 Visual Basic 代码的安全性、性能、设计及其他问题。 分析功能针对面向 .NET 5 或更高版本的项目默认启用。...可通过将 EnableNETAnalyzers 属性设置为 true,在面向 .NET 早期版本的项目上启用代码分析。...这使你能够在生成时强制执行一致的代码样式。 Visual Studio:默认情况下,代码样式分析作为代码重构快速操作对 Visual Studio 中的所有 .NET 项目启用。...另请参阅 代码质量分析规则引用 代码样式分析规则引用 Visual Studio 中的代码分析 .NET 编译器平台 SDK 教程:编写第一个分析器和代码修补程序
调用该方法的对象应引发事件而不是直接调用该方法。 CA1031:不要捕捉一般异常类型 不应捕捉一般异常。 捕捉更具体的异常,或者在执行 catch 块中的最后一条语句时重新引发一般异常。...空接口无法定义任何成员;因此,它无法定义可以实现的协定。...URI 的字符串表示形式容易导致分析和编码错误,并且可造成安全漏洞。 System.Uri 类以一种安全的方式提供这些服务。 CA1056:URI 属性不应是字符串 此规则假定属性表示 URI。...如果内部异常继承自 System.Exception、System.SystemException 或 System.ApplicationException,则外部代码将没有足够的信息来了解如何处理该异常...CA1065:不要在意外的位置引发异常 不应引发异常的方法引发了异常。
默认情况下,此规则会分析整个代码库,但这是可配置的。 规则说明 如果在对某个可释放对象的所有引用超出范围之前未显式释放该对象,则当垃圾回收器运行该对象的终结器时,将在某个不确定的时间释放该对象。...通过使用 try/finally 块,允许在故障点引发异常,并确保对象已释放。...例如,以下 CreateReader1 函数会产生 CA2000 冲突,因为 Visual Basic 编译器正在为加法发出的溢出检查指令可能会引发导致 StreamReader 无法释放的异常。...要解决此问题,可在项目中禁用 Visual Basic 编译器发出溢出检查,也可修改代码,如以下 CreateReader2 函数所示。...若要禁用发出溢出检查,请在解决方案资源管理器中右键单击项目名称,然后单击“属性”。 依次单击“编译”和“高级编译选项”,然后检查“不做整数溢出检查” 。
2017-11-29 16:08 如果要你说出 .NET 中的三个异常,NullReferenceException 一定会成为其中一个;如果说出 .NET 中的一个异常,NullReferenceException...它让这么多人印象深刻,是因为它在项目中实在是太常见了,常见到每一个 C#/.NET 入门者必然会遇到。 然而,这个异常本不应该存在!...说真的一定是因为用 Visual Studio 调试了,Visual Studio 告诉了我们异常发生在哪一句,哪个字段为 null。...于是,当从异常日志准备分析异常原因的时候,只能猜,猜到底为 null 的是谁! 另外,NullReferenceException 异常发生的地方一定不是真正出错的地方!...C# 8.0 极有可能为我们带来“可空引用类型”或者“非空引用类型”;如果真的带来了,这将比 JetBrains.Annotations 拥有更大的强制性,帮助我们避免出现意外的 null 引用,帮助我们在可能为
它提供了代码分析、重构、导航、单元测试支持等多种功能,能够显著提升代码质量和开发效率。安装与配置安装 ReSharper 非常简单,只需在 Visual Studio 中通过扩展管理器搜索并安装即可。...安装完成后,ReSharper 会自动检测项目中的代码问题,并提供相应的修复建议。二、ReSharper 的基本功能1. 代码分析ReSharper 可以实时分析代码,检测潜在的问题和错误。...例如,未使用的变量、冗余的代码块、可能的空引用等。..."; string name = null; Console.WriteLine(name.Length); // 可能的空引用 }}ReSharper 提示:unusedVariable...name 可能为空,调用 Length 属性可能导致 NullReferenceException。2.
它提供了代码分析、重构、导航、单元测试支持等多种功能,能够显著提升代码质量和开发效率。...安装与配置 安装 ReSharper 非常简单,只需在 Visual Studio 中通过扩展管理器搜索并安装即可。安装完成后,ReSharper 会自动检测项目中的代码问题,并提供相应的修复建议。...代码分析 ReSharper 可以实时分析代码,检测潜在的问题和错误。例如,未使用的变量、冗余的代码块、可能的空引用等。..."; string name = null; Console.WriteLine(name.Length); // 可能的空引用 } } ReSharper 提示...name 可能为空,调用 Length 属性可能导致 NullReferenceException。 2.
迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference) 发布于 2017-12-18 13:41...扩展包下载地址:2017年11月5日版本 - 最新版 下载解压后直接双击 install.bat 安装即可体验(安装前退出所有 Visual Studio)。...---- 体验可空引用类型的作用 现在,再写一个新类的时候,Visual Studio 会为我们提示非空引用类型未初始化,并给出建议。 ? ? 采纳它的建议,生成构造函数: ? ?...如果我们认为这个属性可以为 null,那么就可以添加 ? 使此属性的类型变为可空引用类型。 ? 这时,如果在非 null 的地方使用此属性,则会要求判空。 ?...---- 丢不掉的兼容性包袱 由于有兼容性的包袱(至少得让你写了数月几年的项目编译通过吧),所以 C#8.0 的可空引用类型仅仅是“契约”的作用,并不能在编译级别阻止对非空引用类型的 null 赋值。
c.Domain)将引发异常。...,如下所示: 在Visual Studio中打开 WebView2 项目。...在解决方案资源管理器中,右键单击 WebView2 项目,然后选择 “属性”。 选择 “调试 ”选项卡,然后选中 “启用本机代码调试 ”复选框,如下所示。...即使在using块中间引发异常,该using块也可确保Deferral已完成。 ...相反,如果显式调用Complete()的代码,但在完成调用之前引发了异常,那么延迟直到一段时间后才完成,此时垃圾收集器最终会收集并处理延迟。在此期间,WebView2会等待应用程序代码处理事件。
在ASP.NET MVC 项目中添加Bootstrap文件 打开Visual Studio 2013,创建标准的ASP.NET MVC项目,默认情况下已经自动添加了Bootstrap的所有文件,如下所示...当然我们也可以创建一个空的ASP.NET MVC项目手动去添加这些依赖文件,正如下图所示这样,选择空的模板: ?...在新创建的Layout布局页中,使用如下代码来引用Bootstrap资源文件。...在Bootstrap项目中使用捆绑打包 因为我们创建的是空的ASP.NET MVC项目,所以并没有自动引用与打包相关的程序集。...如果Visual Studio HTML编辑器表明无法找到Styles和Scripts对象,那就意味着你缺少了命名空间的引用,你可以手动在布局页的顶部添加System.Web.Optimization
上图中是针对MSVC编译器即Visual VC++编译boost1.69.0的版本, 其中msvc是VC++编译器的名称,12.0代表是VS2013的版本,14.0是VS2015的版本,14.1是VS2017...这样就不用我们自己编译Boost源代码,下载boost_1_69_0-msvc-14.1-64.exe这些文件加压缩到指定的目录后,包含对应的头文件和库文件,就可以直接在Visual Studio2017...源代码文件:Boost_lambda_Demo.cpp 在VS2017中创建一个VC++的控制台空项目Boost_lambda,添加一个Boost_lambda_Demo.cpp文件,代码如下: #include...添加boost的头文件 右键点击【Boost_lambda】-》【属性】,在弹出的项目属性页中,依次【配置属性】-> 【C/C++】-> 【常规】->【附加包含目录】,在其中加入boost1.69.0所在目录...】,在弹出的项目属性页中,依次【配置属性】-> 【链接器】-> 【常规】->【附加库目录】,在其中加入boost1.69.0的lib库所在目录,由于我使用的是基于VS2017的32位x86 debug项目
迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference) 发布于 2017-12-18 21:41...扩展包下载地址:2017年11月5日版本 - 最新版 下载解压后直接双击 install.bat 安装即可体验(安装前退出所有 Visual Studio)。...---- 体验可空引用类型的作用 现在,再写一个新类的时候,Visual Studio 会为我们提示非空引用类型未初始化,并给出建议。 ? ? 采纳它的建议,生成构造函数: ? ?...如果我们认为这个属性可以为 null,那么就可以添加 ? 使此属性的类型变为可空引用类型。 ? 这时,如果在非 null 的地方使用此属性,则会要求判空。 ?...---- 丢不掉的兼容性包袱 由于有兼容性的包袱(至少得让你写了数月几年的项目编译通过吧),所以 C#8.0 的可空引用类型仅仅是“契约”的作用,并不能在编译级别阻止对非空引用类型的 null 赋值。
WCF Web 服务引用工具是 Visual Studio 连接服务的扩展,提供了类似于 .NET Core 和 ASP.NET Core 项目的“添加服务引用”功能的体验 。...系统必备 Visual Studio 2017 版本 15.5 或更高版本 如何使用扩展 备注 “WCF Web 服务引用”选项适用于使用以下项目模板创建的项目 : Visual C# > .NET...如果需要,请在相应的“名称空间”文本框中为生成的代码输入命名空间 。 3c. 单击“下一步”按钮,打开“数据类型选项”页和“客户端选项”页 。 或者,单击“完成”按钮,使用默认选项 。...“数据类型选项”窗体可用于优化生成的服务引用配置设置: 备注 如果在项目的引用程序集中定义了服务引用代码生成所需的数据类型,则“重新使用引用程序集中的类型”复选框选项将非常有用 。...在名为“reference.cs”的文件中生成服务引用代码,并将其添加到“连接的服务”节点下的项目 。 使用在目标平台上编译和运行所需的 NuGet 包引用更新项目文件 (.csproj)。
▲ (旧项目支持) 左 | 右 (新项目支持) ▲ (旧项目格式) 左 | 右 (新项目格式) 可以很明显发现,新格式文件内容很简单易读,而且 Visual Studio 也针对新格式给出分类的引用...当然,新格式还有更多好处,比如多框架,比如开可空引用类型等。 开始迁移 第一步:写个基本框架 右键项目,选“卸载项目”;再右键项目,选“编辑项目文件”。...请复制以下整块代码,然后粘贴替换掉你原来项目文件里的所有内容: 1 2 3 4 5 6 引用,改回以前的属性 如果你以前装过一些 NuGet 包,那么重新装一下;如果你以前引用过一些项目,那么重新引用一下。...如果以前设置了一些特殊属性,那么也右键项目,选“属性”,在新的属性面板里面一条条对着改就好: 输出类型(类库,还是应用程序) 平台目标(Any CPU,还是 x86) 其他 ---- 参考资料 因为本文最早发布的时候
领取专属 10元无门槛券
手把手带您无忧上云