在不运行应用程序的情况下调试 C# 代码

本文关键字:调试 代码 情况下 运行 应用程序 | 更新日期: 2023-09-27 18:37:24

我经常需要调试/测试我的代码或其中的一小部分。

一种方法当然是运行我正在开发的应用程序,或者在开发类库时创建一个小型测试应用程序。

另一种方法是创建一个仅用于调试目的的单元测试,并在Visual Studio中运行它。

但是,如果我不想编写其他代码(如一次性单元测试)并且不想启动整个应用程序(需要一些时间来启动并导航到要调试的代码)怎么办?

有没有办法在Visual Stuio中运行一小部分代码来分别解释C#代码?

编辑

我知道 LINQPad。

但有时我想知道例如,Form运行时的外观,或者组件是否能够与数据库通信。所以在这些情况下,LINQPad 不适合我的需求......

在不运行应用程序的情况下调试 C# 代码

我使用 linqpad http://www.linqpad.net/快速测试 c# 代码。

另一种选择是下载最新的 Roslyn 社区预览版,并使用 C# 交互式窗口进行下载。 它是预发布软件,因此它不支持整个 C# 功能集,但它已经非常接近了。

看看 LINQPad。它非常适合尝试代码片段。不要被这个名字吓倒,它支持 C#/F# 程序和表达式。

快速测试的另一个选项是Scratchpad.cs。通常,它比仅仅为了尝试一个想法而创建命令行项目要好。

看看 F# 解释器。

我经常使用它来测试小代码示例。

假设您有一些这样的代码:

namespace ConsoleApplication5
{
    public class Test
    {
        public Int32 Sum(int a, int b)
        {
            return a + b;
        }
    }
    ...
}

启动 F# 交互窗口,向程序集添加引用,然后开始调试!

> #I @"C:'PathToYourProject'bin'debug";;
--> Added .... to library include path
> #r "ConsoleApplication5.exe";;
--> Referenced ...
> let t = ConsoleApplication5.Test();;
val t : ConsoleApplication5.Test
> t.Sum(9, 7);;
val it : int = 16
> 

不管你信不信,PowerShell使用的是.NET框架。可以从 PowerShell 调用任何内置的 C# 类。

假设您正在尝试测试 String.Substring 方法。

打开PowerShell

然后调用函数类型如下:

"some string".Substring(2,1) # returns 'm'

或者假设你想测试一个更复杂的内置类

foreach($line in [System.IO.File]::ReadLines("C:'path'to'file.txt"))
{
     $line
}

[System.IO.File]和说using System.IO.File;是一回事

PowerShell 的美妙之处在于 - 它是 C# 的控制台......没有人知道。