巧用CSI 进行dll或程序的简易单元测试
2016-09-09 00:36
197 查看
自从 Roslyn 面世已来,围绕.net的各种风声水起。到底它有何妙之处以至一石击起千层浪呢?首先咱们来来看它的主人微软是怎么说它的:“Compiler-as-a-Service”、”APIs”、“script”、“open source” 等等。
今天我要谈的是其中的一个小工具 CSI(Compiler Services Interactive) 的应用。这个小东东其实很好理解,就是C# Code AS Script ,即把命令行输入的内容当作C# 脚本进行动态编译处理。因为有这一个功能,苦逼的BUG工程师终于有福利了,因为使用CSI可以很方便的让我们对做程序进行调试工作了,bug的复现也就容易很多了。下面是几个用CSI当测试工具使常用的几个技巧:
今天我要谈的是其中的一个小工具 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. 简易输出?
想要简单直接打印结果内容,由其是一些复杂的结构,你可以输入要打印的变量,后面不要带“;”即可。
相关文章推荐
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册)
- VS2013进行C#程序的单元测试
- Eclipse使用jUnit4对MapReduce程序进行单元测试
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 简易四则运算生成程序——第一次改进后的单元测试
- Unity3D项目程序加密2——对dll进行混淆
- Unity3D项目程序加密2——对dll进行混淆
- Unity3D项目程序加密——对dll进行混淆
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 对MapReduce程序进行单元测试
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 利用manifest文件对程序目录下的dll进行分类
- Unity3D项目程序加密2——对dll进行混淆
- 例说Exe程序作为DLL进行加载
- 图解MFC程序中使用Google单元测试工具GTest进行TDD开发(转载)
- Unity3D项目程序加密2——对dll进行混淆
- (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”); (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。
- Spark程序进行单元测试-使用scala