如何抽象.csx文件中重复的using与#r语句以降低代码冗余
统一管理CSX文件重复引用与导入的解决方案
方案1:仅需1行引入代码
你可以创建独立的公共CSX文件存储所有重复的#r引用与using语句,例如命名为CommonReferences.csx,内容示例如下:
// 所有公共包引用 #r "nuget: Newtonsoft.Json, 13.0.3" #r "nuget: Dapper, 2.0.151" #r "./localLibs/CustomUtils.dll" // 所有公共命名空间导入 using System; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using Dapper; using CustomUtils;
之后所有业务CSX文件的顶部仅需添加1行加载指令即可复用所有公共配置:#load "CommonReferences.csx"
注:路径可按需写相对路径或绝对路径,相对路径以当前业务CSX文件所在位置为基准。
#load指令会自动将公共文件内的所有引用、导入甚至全局函数注入到当前文件上下文,效果和直接写在当前文件完全一致。
方案2:零额外代码实现无重复
如果使用dotnet script运行CSX文件,可以通过运行参数或目录配置实现业务文件完全不用加引入语句:
- 临时指定公共文件:运行时添加
--load参数即可自动注入公共引用,命令示例:dotnet script myScript.csx --load CommonReferences.csx - 全局自动加载:在业务CSX所在目录创建
.dotnetscript/init.csx文件,将所有公共引用与导入写入该文件,当前目录及子目录下的所有CSX运行时会自动加载该文件的内容,业务文件无需添加任何引入相关代码。
注意事项
- 公共文件内的Nuget引用会在首次加载时自动还原,和直接写在业务文件中逻辑完全一致
- 若使用VS Code等IDE编辑CSX,可在工作区配置中将公共CSX加入解析范围,避免IDE误报找不到命名空间的错误
- 公共文件还可以存放全局复用的常量、通用工具函数,进一步降低业务代码的重复率
内容的提问来源于stack exchange,提问作者Kezin99
相关产品推荐
相关产品推荐

