c# - 如何在 Visual Studio 的每个类方法中插入打印语句
问题描述
我想在 C# 类中的每个方法的开头添加一个打印语句以帮助调试。基本上,我想把这个
public class SomeClass {
public void Foo() {
...
}
public void Bar() {
...
}
}
进入这个
public class SomeClass {
public void Foo() {
Console.WriteLine("SomeClass.Foo started");
...
}
public void Bar() {
Console.WriteLine("SomeClass.Bar started");
...
}
}
我正在使用适用于 Mac 的 Visual Studio 2019。是否有任何插件或内置的 VS 功能可以让我这样做?
解决方案
@MirzaDobric,我将转向一个答案,只是为了给更多空间。是否有任何其他内置方法来记录每个方法调用...我只能想到一种适合该法案的方法,那就是面向方面的编程。我说“有点”是因为这比您所追求的旧式 printf 调试更具侵入性,因为它对运行时行为的影响更大。
但是您可以在此处阅读有关几种方法的更多信息: https ://docs.microsoft.com/en-us/archive/msdn-magazine/2014/february/aspect-orienting-programming-aspect-oriented-programming- with-the-realproxy-class
如果您不能使用调试器,也不能使用分析器,那么最好在少数需要它的地方手动添加跟踪。我在评论中发给你的那个链接应该足以解释这一点。请注意,我说的是跟踪,但这与使用 log4net 或 serilog 之类的东西相同。所有这三个的重要好处是添加外部配置来控制它记录的时间和数量,这样您就可以关闭日志记录并重新打开它,而无需重新编译和重新部署应用程序。
同样,这总是存在浪费精力的风险,因为如果问题是零星的,那么日志记录可能会改变运行时行为,足以阻止它发生或导致它发生在日志记录未涵盖的某个地方。但是,如果您别无选择,请开始记录并希望获得最好的结果。
推荐阅读
- javascript - 使用 Get 和 Javascript 检索多选值
- sql - SQL:返回日期跨度有间隙
- powershell - 在字符串中使用系统变量在 Powershell 中获取文件版本
- python - PyGithub - 如何在 repo 中获取子文件夹的内容
- yaml - 如何在 Arcanist 中设置 YAML linting?
- monitoring - 为 Nagios 插件编写优雅的超时
- python - 熊猫数据框查询
- visual-studio-code - 为什么 Visual Studio 代码会在我的笔记本电脑和台式机上卸载 PDF?
- node.js - 如何限制 AWS DynamoDB 扫描的项目数量?
- php - 未定义变量:数据(查看:C:\cygwin64\home\hp\AddressBook\resources\views\Update\edit.blade.php)