巧用CSI 进行dll或程序的简易单元测试

自从 Roslyn 面世已来,围绕.net的各种风声水起。到底它有何妙之处以至一石击起千层浪呢?首先咱们来来看它的主人微软是怎么说它的:“Compiler-as-a-Service”、”APIs”、“script”、“open source” 等等。
今天我要谈的是其中的一个小工具 CSI(Compiler Services Interactive) 的应用。这个小东东其实很好理解,就是C# Code AS Script ,即把命令行输入的内容当作C# 脚本进行动态编译处理。因为有这一个功能,苦逼的BUG工程师终于有福利了,因为使用CSI可以很方便的让我们对做程序进行调试工作了,bug的复现也就容易很多了。下面是几个用CSI当测试工具使常用的几个技巧:

1. Roslyn 在哪里?

 NuGet里,你只需要引入:Microsoft.Net.Compilers、Microsoft.CodeAnalysis就可以使用它了

2. 怎么用Roslyn进行调试?

 对于WinForm程序,一般躲在
 package/Microsoft.Net.Compilers{version?}/tools目录下
 对于Web程序,一般生成后,bin/roslyn目录下

3. 怎么用?

双击csi.exe即可开始使用

4. 怎么加载程序集?

    #r "程序集名称,如果不在当前目录,则使用相对路径或完整路径"
#load "添加.cs文件或程序集"
一般情况下#r 用来加载程序集 #load 用来加载文件

5. 怎么调试?

这个没有技巧,你就把它当作写单元测试来。如:
#r "E:\datasource\ihu.doctor\lib\Common.dll"
using Sinldo.Common.Extensions;
using static System.Console;

public static string FindString(string value, string search, out int index, out string[] parts)
{
    parts = value.DefaultNumberSplit();
    index = 0;
    foreach (var part in parts)
    {
        if (part == search)
        {
            return part;
        }
        index++;
    }
    return null;
}

string val = "123,456,789,012,456,798,5689,5678,568,782,458,962";
int index;
string[] parts;
string result = FindString(val, "568", out index, out parts);

WriteLine(string.Join(",", parts));
WriteLine($"index:{index},value:{result}");

6. 简易输出?

 想要简单直接打印结果内容,由其是一些复杂的结构,你可以输入要打印的变量,后面不要带“;”即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值