.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.Test

using 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 == )
{
String fileName = args[];
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();
line = line.Replace(";","");
line = line.Trim();
Eval(line);
}
}
else
Console.WriteLine("未指定调用方法: " + fileName);
}
} static void Eval(String cmd)
{
Console.WriteLine("[Invoke]:" + cmd);
int lastIdx = cmd.LastIndexOf('.');
String typeName = cmd.Substring(, lastIdx);
String methodName = cmd.Substring(lastIdx + );
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版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...

  2. vagrant打造自己的开发环境

    vagrant打造自己的开发环境 缘由: 在网上看到斌哥,爽神都写了关于vagrant的博客,都在说很强大,所以很好奇这玩意怎么个强大,然后也就自己来一发玩玩看看. 真实缘由: 说实话是电脑配置太低, ...

  3. 用notepad++ 打造轻量级Java编译器

    http://blog.163.com/jackie_howe/blog/static/19949134720125591752396/ 用notepad++ 打造轻量级Java编译器 2012-06 ...

  4. 打造高效前端工作环境 - tmux

    打造高效前端工作环境 - tmux 前言  现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一 ...

  5. 自给自足:动手打造html5俄罗斯方块

    时间:凌晨2:36 历时:两晚+半个下午 代码:约300行 这两天发烧,头痛脑壳昏的,没想到竟然还能有动力去做小游戏,其实这不是我第一次想要弄个俄罗斯方块,前几个星期的时候就尝试着去弄一个,然后被凌乱 ...

  6. 动手打造轻量web服务器(二)路由

    tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...

  7. VSCode+C++环境搭建

    date: 2019-10-05 VSCode+C++环境搭建 其实并不完整,毕竟我也只是一个OIer,并不会很高深的东西.(众所周知,OIer主业是软件开发) 安装VSCode 下载安装包 这个很简 ...

  8. 39 Ubuntu下配置python的vscode开发环境

    0 引言 最近想在ubuntu下搞深度学习,首先配置了python的vscode开发环境.在配置python时,选择了Anaconda3.x,保证了其相对于系统python2.x的独立性.另外,vsc ...

  9. Mac OS安装Go语言及配置VSCode开发环境:一个工具(gopls)解千愁

    前言 截止到目前为止,Go语言已经更新到1.14.1,网上的很多教程均已经过时,我在此汇总并整理一下相关的教程,提供一个适合当下的Mac OS教程. 教程中使用了Go在1.11之后推出的依赖包管理工具 ...

随机推荐

  1. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(2)- RT1052DVL6性能实测

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新 ...

  2. HDFS架构及原理

    原文链接:HDFS架构及原理 引言 进入大数据时代,数据集的大小已经超过一台独立物理计算机的存储能力,我们需要对数据进行分区(partition)并存储到若干台单独的计算机上,也就出现了管理网络中跨多 ...

  3. JavaScript小实例:拖拽应用(二)

    经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...

  4. Python中文词频统计

    以下是关于小说的中文词频统计 这里有三个文件,分别为novel.txt.punctuation.txt.meaningless.txt. 这三个是小说文本.特殊符号和无意义词 Python代码统计词频 ...

  5. arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. Echarts地图使用经验-地图变形和添加数据

    关于echart2,echart3地图的使用一点人生经验: 1.echart3,echart2加载地图变形修复. 最近在使用echart2使用过程中,发现加载海南地图会产生变形.如下图,海南地图产生了 ...

  7. Webpack4教程:第一部分,入口、输入和ES6模块

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://wanago.io/2018/07/16/webpack-4-course-par ...

  8. (最简单)红米手机5A的USB调试模式在哪里开启的方法

    当我们使用安卓手机链接Pc的时候,或者使用的有些APP比如我们公司营销小组当使用的APP引号精灵,之前使用的老版本就需要开启usb调试模式下使用,现当新版本不需要了,如果手机没有开启usb调试模式,P ...

  9. axios中的this指向问题

    最近在使用vue过程中,使用axios进行接口请求,确发现取不到值,返回为undefined. show (item) { let searchText = item.keyword console. ...

  10. 使用jquery实现选项卡切换效果

    几张简陋的框架效果图 页面加载时: 选项卡操作后: css样式: <style type="text/css"> *{margin:0px;padding:0px;} ...