我正在寻找快速调试我刚才编写的代码的方法,看看它是否正常运行并且我所有的假设都是正确的。我不想运行整个系统,因为缺少部分基础设施来获取此代码。我使用单元测试,但我发现它很麻烦。还有什么更好的吗?
目标是:
这样做的梦想方式是:
namespace Aaa
{
class SomeClass
{
public string Name { get; private set; }
public SomeClass(string name, int value)
{
this.Name = name;
InitializeSth();
}
public DoSomethingPublic()
{
// ...
}
private DoSomethingPrivate()
{
// ...
}
public static void TestThis() // <-- debug this
{
var obj = new SomeClass("a", 1); // <-- put breakpoint here
obj.DoSomethingPublic();
obj.DoSomethingPrivate();
}
}
}
这在Java中是可行的并且是如此伟大的事情。这也允许访问私人物品。
但我也对其他选择持开放态度。在VS2015中有这样的东西吗?
到目前为止我尝试过:
我还发现了一些关于Resharper能够调试任何静态函数的信息。但我不想使用Resharper,主要是因为性能。
答案 0 :(得分:0)
要在不运行整个应用程序的情况下调试一个方法,我经常在VS IDE中使用单元测试,因为它不会真正影响我们的应用程序的开发。
我之前使用Resharper工具获得了方法:https://blog.jetbrains.com/dotnet/2015/08/28/run-configurations-debug-any-static-method-in-visual-studio-and-more/
在VS IDE中,要直接调试方法而不调试/运行应用程序,它确实没有比单元测试项目更好的建议。
当然,如果您想在不运行应用程序的情况下调试代码,它还有其他第三方工具:
答案 1 :(得分:0)
答案 2 :(得分:0)
回答我自己的问题 - 似乎我没有评估立即窗口。
可以使用
调用任何静态方法TestThis()
)?TestThis()
或Debug.EvaluateStatement TestThis()
)这甚至允许调用私有静态方法。如果需要,那么在启动方法之前将构建项目,并且该方法在调试器中执行,因此它将在任何断点处停止。
总结:按Alt+Ctrl+I
进入立即窗口,输入带括号的方法名称,然后按Enter
。
有两个缺点:
Main
方法的方法)中,则必须使用完整的命名空间和类名,例如MyCompany.MyApp.Logic.SomeClass.TestMethod()
来运行它Up-Arrow, Enter
调用最后一个命令。这比右键单击测试并选择“调试此测试”更好,但不是最佳。如果您知道更好的事情或某些方法可以使这两个问题更好,请添加答案。我找了一段时间找到一个键盘快捷键重复上一个立即窗口命令,但找不到一个。我没有将此答案标记为现在已被接受,以防发布更好的内容。