.Net 的项目都挺重的,一直想找一个轻量级的 CSharp 环境,能像Python那样,选一个文件就能跑的。之前用的是 LinqPad,但它的缺点也很明显:

(1)     不付费,自动完成不能用(好吧,俺购买了);

(2)     丑!(这个不能忍受!丑影响心情,作为一位靠灵感吃饭的算法开发人员,能忍受贵,不能忍受丑!)

于是自己动手,把VSCode改成了轻量级 CSharp 环境。

(1)     建立一个目录,比如,VSCodeTest,进入该目录,dotnet new console 创建项目;

(2)     用VSCode打开目录,调试下程序,这时,目录下自动生成了 launch.json 文件,修改文件,将

"args": [] 

改为

"args": ["${file}"]

这样,当执行程序时,会自动将当前打开文件的路径传给 Main 方法。

(3)     建立Scripts目录,建立Foo.cs 文件,内容如下:

//RUN: VSCodeTest.Foo.Testusing System;namespace VSCodeTest
{class Foo{public static void Test(){Console.WriteLine("Test Run Script");}}
}

文件里,第一行 //RUN: 后面指定运行的方法名称

(4)     修改 Program.cs 如下:

using System;
using System.IO;
using System.Reflection;namespace VSCodeTest
{class Program{static void Main(string[] args){            if(args.Length == 1){String fileName = args[0];if(File.Exists(fileName) == false){Console.WriteLine("文件不存在:" + fileName);return;}var it = File.ReadLines(fileName).GetEnumerator();if(it.MoveNext()){String line = it.Current;line = line.Trim();if(line.StartsWith("//RUN:")){line = line.Substring(6);line = line.Replace(";","");line = line.Trim();Eval(line);}}elseConsole.WriteLine("未指定调用方法: " + fileName);}}static void Eval(String cmd){Console.WriteLine("[Invoke]:" + cmd);int lastIdx = cmd.LastIndexOf('.');String typeName = cmd.Substring(0, lastIdx);String methodName = cmd.Substring(lastIdx + 1);try{var type = Type.GetType(typeName);if (type!= null){var method = type.GetMethod(methodName);if(method != null){method.Invoke(null,null);return;}}Console.WriteLine("未找到调用方法: " + cmd);}catch(Exception ex){Console.WriteLine(ex.Message);}}}
}

这样,当运行时,它会解析指定的方法名称,通过反射来调用它。

就这么就OK了。打开哪个文件,执行的就是该文件中指定的方法。比如,打开 Foo.cs 文件,按 F5 调试或Ctrl+F5 直接执行,可以看见,程序执行的是指定的方法。

优点:

(1)     支持直接执行;

(2)     支持调试;

(3)     支持引用第三方dll,支持文件间的相互引用。

缺点:如果项目里其他文件有编译错误,则会影响当前文件的执行。

----

还是 VSCode 看着舒服啊。

自己动手,打造轻量级VSCode/C#环境代替LinqPad相关推荐

  1. 基于Mono和VSCode打造轻量级跨平台IDE

      最近Visual Studio推出Mac版本的消息迅速在技术圈里刷屏,当工程师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出怎样精彩的火花呢? ...

  2. 7 centos 查看程序文件数量_「动手打造家庭媒体网络平台」安装篇-centos搭建DLNA媒体服务...

    大家好,我是路程lucky,热爱开发.设计.学习.生活.爱捣鼓的web前后端工程师~ 本文的重点是在之前文章提到创建的centos基础上继续搭建DLNA媒体服务.由于centos的系统是从零开始初步安 ...

  3. 深入浅出PE文件格式---自己动手打造PE Show

    深入浅出PE文件格式---自己动手打造PE Show                                                             作者:WiNrOOt // ...

  4. (转)如何动手打造属于自己的智能家居

    转自:http://www.cocoachina.com/programmer/20140629/8974.html 2014-06-29 14:11 编辑: suiling 分类:程序人生 来源:C ...

  5. 程序员如何动手打造属于自己的智能…

    自己动手打造属于自己的智能家居(一) 最近智能家居比较火,各种电子产品也层出不穷,于是利用业余时间,学了学,将自己的房子简单改造了一下,也算体验一下智能家居.在开始正文之前,有必要先声明一下: 1.我 ...

  6. 群晖nas介绍文档_群晖 NAS 选购 入门指南:动手打造自己的家庭数据中心

    原标题:群晖 NAS 选购 & 入门指南:动手打造自己的家庭数据中心 Matrix 精选 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考.我们会不定期挑选 ...

  7. 自己动手打造工具系列之自动刷新简历

    0×00 背景 话说搞安全的大佬们都非常忙,自己在一步一步成长中无暇顾及其他琐碎的事情,比如让猎头注意到各位大佬.如何让猎头和大厂注意到自己呢?第一.提高自己在整个行业的曝光度:第二.定时刷新自己的简 ...

  8. 全栈开发——动手打造属于自己的直播间(Vue+SpringBoot+Nginx)的补充使用说明

    全栈开发--动手打造属于自己的直播间(Vue+SpringBoot+Nginx)的补充使用说明    这几天应学姐的要求,需要做一个直播的小网站用来内部考核,我一想这个直播,不会啊,就去GitHub上 ...

  9. 从零开始的51单片机——VsCode+EIDE环境搭建

    从零开始的51单片机--VsCode+EIDE环境搭建 环境 Windows Keil5 Vs Code EIDE STC-ISP 搭建环境 安装Keil 从官网下载Keil5并安装(选择C51) 安 ...

最新文章

  1. vim中taglist使用
  2. docker安装kibana7.6.1
  3. python发送短信接口_python发送短信和发送邮件
  4. pyenv 让 python 版本完美切换
  5. Shell中的一些小技巧
  6. jmeter 获取全部响应_Jmeter获取响应结果中参数出现的次数
  7. zone.js在bootstrap阶段对window对象里一些标准方法的注入逻辑
  8. poj 1679: The Unique MST【次小生成树】
  9. 【华为云技术分享】云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫
  10. bert获得词向量_只需几行 Python 代码,即可用 BERT 玩转词嵌入!
  11. 常见并发工具的使用和原理解析——Condition(重点在第五节)
  12. sns java_JEESNS首页、文档和下载 - Java 开源 SNS 社区系统
  13. Swift 在UILabel前面或者后面插入图标
  14. API 服务器健康状态自检
  15. java绝对值排序_HDU 2020 绝对值排序
  16. win7计算机属性资源管理器停止工作,win7系统windows资源管理器已停止工作的解决方法...
  17. 考研词汇测试软件,考研词汇 - 在线打字测试(dazi.kukuw.com)
  18. 全基因组选择中准确性的影响因素
  19. 机器学习(八):CS229ML课程笔记(4)——生成学习,高斯判别分析,朴素贝叶斯
  20. 数字信号处理DFT实验二

热门文章

  1. 我的软考之路(九)——总结篇
  2. (U3D)Time的使用
  3. 关于ASP.NET Web 部件连接的引入
  4. Linux exec与重定向
  5. Varnish 和 Squid比较到底强多少
  6. 关于Dreamweaver乱码问题的解决方案
  7. 动态执行流程分析和性能瓶颈分析的利器——gperftools的Cpu Profiler
  8. Matlab中去除exe执行时文件的DOS窗口的方法
  9. CxImage类库的简介
  10. matlab图像滤波