专栏首页林德熙的博客使用 C# 写脚本的优势和方法

使用 C# 写脚本的优势和方法

现在很方便就可以将 C# 作为某个脚本使用,本文这里的脚本指的是直接执行源代码的方式。现在是 2020 现在的 C# 默认在 dotnet 的支持下,可以作为脚本使用,本文将告诉大家使用 C# 写脚本的优势和方法

优势

优势如下:

  • 基于 dotnet 的 C# 有整个 dotnet 的基础库和通过 NuGet 带来的海量的第三方库,有超级多的功能都有大佬实现过。使用 C# 写脚本可以通过大量的库快速完成任务,站在巨人的肩膀上也是一种进步
  • 日常咱开发用的是 C# 如果此时采用其他的语言如 bat 或 py 等,虽然这部分脚本也很优秀,但是架不住咱不是天天维护,每次去写总是发现熟练度不够。而熟练度不够带来的问题就是对里面一些细节的坑不够了解,或者了解但是写的时候忘了。此时的脚本的可维护性以及稳定性都不是很好。当然脚本本身就不看重以上两点。最重要的应该就是写的时候的效率了,千万不要和我吹 py 的编写效率比 C# 高哈,这完全取决于熟悉程度哦。千万记住,前提是咱不是天天写脚本的
  • 调试方便,支持复杂的逻辑。虽然其他的语言如 PowerShell 等都有调试工具,但是一个新的调试工具上手起来也是有成本的。而采用 C# 可以让咱用上太阳系最强的 VisualStudio 工具辅助调试,调试手段特别多。在支持了调试之后,就可以放心开启复杂逻辑模式,当成业务代码一样来写。在说到调试方便的时候,就不得不说到最难调试的 bat 脚本了,这部分脚本的中间变量完全需要靠输出

使用方法

一句话跑起来

dotnet run

一句话就可以执行脚本了,执行方法就是进入到脚本所在的文件夹,通过 dotnet run 命令就可以自动构建然后运行构建的应用,也就是本质上还是执行一个 exe 文件,但是咱可以作为脚本,用源代码的形式分发

那么从零开始创建一个脚本可以如何玩?

我比较推荐在 VS 上创建,在 VS 里面新建一个 dotnet core 控制台应用就可以了。创建完成编写脚本,调试完成,发布。发布的时候是发布整个代码文件夹,核心只是包含一个 csproj 项目文件,和用到的 cs 脚本代码文件

而纯命令行的可以使用如下方法

dotnet new console -o Foo

请将上面的 Foo 替换为你创建的脚本名,此时使用中文名也是可以的(大佬不要喷我),当然用中文名的时候有些 Linux 系统对此支持不是特别好

上面这句命令就是创建默认的 dotnet 控制台应用,这个控制台应用默认只是包含两个文件,一个是 xx.csproj 项目文件,另一个 Program.cs 脚本代码文件

然后通过 cd 命令进入到刚才创建的脚本文件夹

cd Foo

当然,需要你替换 Foo 为你创建的脚本名

此时可以尝试在 Program.cs 文件里面的 Main 方法添加一些逻辑,如更改输出内容等。在 C# 脚本里面,在运行的时候都是从 Main 方法开始的,也就是入口代码应该放在这个函数里面

在进入到脚本所在文件夹的时候,就可以通过 dotnet run 这一句命令执行起来了

这样就能做到特别方便使用 C# 作为脚本使用,可以将 C# 脚本放在自动构建上,如 gitlab 的 ci 或 GitHub 的 Action 等

使用 dotnet run 的命令是全平台的哦,也就是在 Linux 服务器上和在 Windows 设备上都是相同的这一句命令就能运行起来脚本。只需要在脚本里面没有写平台相关的代码,就可以全平台运行的

更多命令

指定运行某个文件夹的脚本

作为脚本的时候,其实小伙伴可以注意到,上面代码是需要通过 cd 命令进入到某个文件夹的,此时会干扰当前工作路径。而 dotnet run 命令提供了参数,可以让咱指定运行的是哪个文件夹的脚本

指定运行 Foo 文件夹里面的脚本,下面代码将会尝试执行 Foo 文件夹里面的脚本,但是前提是 Foo 文件夹里面仅有一个 csproj 项目文件,同时项目里面的代码是能构建通过的

dotnet run -p Foo

这里的 -p--project 缩写

传入参数

默认添加的参数都是作为 dotnet run 命令的参数,这里的命令能添加的参数特别多,请看 dotnet run command

而如果需要给运行的脚本传入参数,需要添加 -- 字符,在 -- 后面的命令就是传给脚本的参数,如下面代码

dotnet run -p Foo -- 123

上面代码的 123 将会传入到脚本里面,可以在脚本的 Main 方法的参数拿到传入的命令


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/%E4%BD%BF%E7%94%A8-C-%E5%86%99%E8%84%9A%E6%9C%AC%E7%9A%84%E4%BC%98%E5%8A%BF%E5%92%8C%E6%96%B9%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git 提交添加 emoij 文字

    可能看到 git 提交是文本,就认为他无法使用表情图片,实际上 git 提交是可以添加表情。 本文告诉大家如何做出下面图片提交

    林德熙
  • dotnet 通过 WMI 获取指定进程的输入命令行

    使用下面代码,使用 Win32_Process 拿到所有的进程,通过 WHERE 判断当前的进程,然后拿到进程传入的命令

    林德熙
  • dotnet core 使用 PowerShell 脚本

    本文告诉大家如何在 dotnet core 通过 Host PowerShell 的方法使用 PowerShell 脚本

    林德熙
  • 好省app新手必看 5分钟带你玩转好省团长模式

     好省是一款导购APP,依托于淘宝天猫平台,为广大用户提供海量优惠券,致力于帮助用户买到最具性价比的网购商品。与此同时,好省还一个创业平台,在这里,任何人...

    速成应用小程序开发平台
  • ModSecurity技巧:使用ssdeep检测Webshell

    最新版本的ModSecurity增加了ssdeep检测webshell的接口,于是猛地回忆起搞客户端安全(游戏安全)的时候买过一本书《恶意软件分析诀窍与工具箱-...

    FB客服
  • 如何通过预加载器提升网页加载速度

    预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措。Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了...

    wangxl
  • 【源码】手把手教你用Python实现Vivado和ModelSim仿真自动化

    我们在Windows系统下使用Vivado的默认设置调用第三方仿真器比如ModelSim进行仿真时,一开始仿真软件都会默认在波形界面中加载testbench顶层...

    网络交换FPGA
  • 如何通过预加载器提升网页加载速度

    预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措。Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了...

    葡萄城控件
  • Python语言学习笔记——简介

    Python语言呢,现在应用和使用都很广泛,大家即使没有用过,可能也见过它的广告(可真是广告满天飞啊)。

    Sidchen
  • 基于可编程交换芯片的硬件负载均衡应用

    2014年,P4作为一种全新的专用编程语言正式进入大众视野,并且在网络界引起了极大地反响和关注。6个年头过去,随着P4的发展成熟,行业生态也逐步走向繁荣。业界首...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券