dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 released

Intro

dotnet-exec 是一个 C# 程序的命令行小工具,可以用来运行一些简单的 C# 程序而无需创建项目文件,而且可以自定义项目的入口方法,支持但不限于 Main 方法

Install/Update

dotnet-exec 是一个 dotnet tool,可以使用安装 dotnet tool 的命令来安装

安装/更新最新稳定版本:

dotnet tool update -g dotnet-execute

安装最新的 preview 版本:

dotnet tool update -g dotnet-execute --prerelease

Updates

Features

Custom Usings

在 0.4.0 版本中支持用户自定义 using 默认会包含默认的 using 引用,你也可以自定义要增加的 using

比如说下面这个示例,使用了一个 static using

dotnet-exec 'code:WriteLine(1+1);' --using "static System.Console"

输出结果如下:

11ef4047953b39089707eb033f30a1d5.png

如果不加这个引用的话就会报错

7cda115f8cb12fe6d84ba6355335d04b.png

我们也可以移除默认的 using 引用,只需要以 “-”开头就可以了,比如下面这样

b88bc8ae880faaee60818ea282c37365.png

前面可以正常编译并执行的程序就变得编译不通过了

Preview enhancement

在新版本中增加了一个 --preview 的选项来简化 --lang-version=Preview 的配置,除了 LangVersion 配置之外,还会增加一个程序集 attribute [assembly:System.Runtime.Versioning.RequiresPreviewFeatures] 来启用一些还在预览中的一些特性,从 .NET 6 开始支持正式版发布中带一些预览特性的功能,使用的话需要配置这个 attribute,所以针对 preview 增加了这个 Attribute

8e10a517f8184e159dedb11372454bb3.png

Startup type

新的版本中增加了一个 --startup-type 的选项,默认如果有多个入口会找到第一个,startup-type 可以帮助找到更加准确的入口

Reference handling refactor

之前是直接把编译好的 dll 加载到了默认的 AssemblyLoadContext,这在一般情况下没什么问题

但是在出现程序集版本冲突的时候就会报错,新的版本中会使用单独的 AssemblyLoadContext,并且修复了之前单独使用 AssemblyLoadContext 时执行代码的问题,就是因为前面介绍的 Reference Assembly,在编译时使用引用程序集,在执行时换成了包含实现的实现程序集去执行代码,这样我们在需要测试两种版本下不同的行为就会变得简单

d82870775d780fcca7f4c071a6f42032.png

Executor refactor

0.4.0 的版本中增加了 --executor-type,类似于上一个版本中的 --compiler-type,但是目前只提供了一种实现,主要为了便于更好的进行扩展

Docker support

如果你不是 dotnet 开发者,不想安装 dotnet sdk,你也可以使用 docker 来尝试它

docker run --rm weihanli/dotnet-exec:0.4.0 dotnet-exec "code:(1+1).Dump()"

a1313e7e1c16bfbd58c34153fe2dcf8c.png

docker

Bug fix

  • 修复 Linux 上 dotnet path 的问题

    在 Linux 环境上默认的 dotnet 路径并不是 dotnet 可执行文件,而是一个 symbol link 文件,需要找到对应真正的文件路径,由于代码的 BUG 导致没有转换成真正的文件路径,在 0.4.0 版本中已经修复

    5ffb27f0a3b26208f55f862515ae9eb0.png

More

目前 dotnet-exec 依赖于 SDK 环境,后面要改进一下,只需要 Runtime 环境就可以,这样 docker 镜像可以小很多,另外打算支持可以自定义引用,比如引用自己的 dll 或者指定的 Nuget 包

References

  • https://github.com/WeihanLi/dotnet-exec

  • https://www.nuget.org/packages/dotnet-execute/

  • https://hub.docker.com/repository/docker/weihanli/dotnet-exec

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET in China - What's New in .NET

点击蓝字关注我们编辑:Alan Wang排版:Rani Sun活动介绍去年11月,.NET 6 的发布,为我们带来了 .NET 多平台应用 UI(.NET MAUI)。就在前不久,.NET MAUI 已正式发布。未来,作为 .NET 7 …

[转].NET 开源项目 Anet 介绍

使用 Anet 有一段时间了,已经在我的个人网站(如 bookist.cc)投入使用,目前没有发现什么大问题,所以才敢写篇文章向大家介绍。 GitHub 地址: https://github.com/anet-team/anet Anet 是一个 .NET Core 通用…

强烈推荐国内几款优秀的开源电商系统

一、背景需求 我玩得好的朋友刚创业,搞电商最一块,想做个全套的电商框架系统,希望支持公众号、小程序、H5、pc后台管理等功能,创业初期资金非常紧张,请开发人员做成本太高,然后就咨询我,有没有最…

Maui的学习之路(二)--设置

Maui的学习之路(二) -- 设置上一篇我们做了Maui的基本介绍,理论上这一篇应该会创建第一个Maui的应用,以便对此进行详细的评估,并逐步深入。如果你需要进行Maui首个应用的创建,那么欢迎访问.NET MAUI 创建移…

今天,Java编程周末提高班(第一期)正式结束

Java编程周末提高班(第一期),走过了近两个月历程,一共同拥有68人次学生周末到老师家进行Java学习与交流。近距离的和一群年轻的学习接触,收获非常多,特别是对以后教学的改进。在学习的闲暇。大家自己做饭&a…

基本反射了解

1 package cn.wh;2 /**3 * java.lang.Class4 * author 王恒5 * time 2016年11月2日 上午10:39:256 */7 public class RedlectTest {8 public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {9 …

[转]让.NET应用秒变微服务

随着近年来微服务的发展,许多团队开始将自己的单体应用改造为微服务。通常Java或Go的应用可以通过业界已有的微服务框架作为微服务开发和改造的底座,封装掉解决跨网络问题带来的复杂性。但以Chassis模式进行的微服务改造有两大问题:多语言框架…

WPF 使用 MAUI 的自绘制逻辑

这是一个当前还没开发完成的功能,准确来说连预览版也算不上的功能。我原本以为 MAUI 是无法在 WPF 上面跑的,然而在看完了 MAUI 整个大的设计,才了解到,原来 MAUI 是一个非常庞大的开发项目。在 MAUI 里面,虽然现在是正…

[转]redis 5.0.5 5分钟搭建redis集群

环境:centos 7 1:下载并安装redis ​​​​​​​$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz$ cd redis-5.0.5$ make redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功,并且redis…

Window.document对象

一、找到元素: docunment.getElementById("id");根据id找,最多找一个; var a docunment.getElementById("id");将找到的元素放在变量中; docunment.getElementsByName("name")&am…

C# 读写文件从用户态切到内核态,到底是个什么流程?

一:背景 1. 一个很好奇的问题我们在学习 C# 的过程中,总会听到一个词叫做 内核态 ,比如说用 C# 读写文件,会涉及到代码从 用户态 到 内核态 的切换,用 HttpClient 获取远端的数据,也会涉及到 用户态 到 内核…

【土地评价与土地管理】案例:某地区土地农业利用潜力评价

文章目录 一、确定评价单元二、拟定潜力评价系统表、确定指标权重三、指标评价四、评定潜力等级五、得出潜力评价结果一、确定评价单元 土地潜力评价单元采用地块作为评价单元,此地块是建立在土地利用现状的基础上, 综合土地的自然属性来确定,评价单元界线与土地现有界线基本…

code point,code unit

2019独角兽企业重金招聘Python工程师标准>>> 从一段API描述谈起: 在String的length的API中描述是这样的! lengthpublic int length() Returns the length of this string. The length is equal to the number of 16-bit Unicode characters i…

【土地评价与土地管理】案例:兰州市榆中县农用地分等

文章目录 一、资料收集二、确定标准耕作制度、基准作物、指定作物、光温(气候生产潜力)三、划分指标区,确定分等因素及权重四、编制“指定作物-分等因素-自然质量分”记分规则表五、绘制分等因素分值图,划分分等单元六、计算农用地自然质量分七、计算自然质量等指数八、计算…

业务多变的公司上云后蒸蒸日上

一、云服务器与传统服务器的对比 1)、传统服务器 传统服务器是一个独立的硬件设备,可以理解成是一台放在机房的高配置电脑,可根据需求安装各种操作系统以及配置各种环境,性能也比较强大。 2)、云服务器 云服务器是构建在硬件服务器集群之上,…

2016福州大学软件工程第四次团队作业-系统设计成绩汇总

第四次团队作业——系统设计打分统计结果如下: 学号组别团队分数贡献比例个人分数031401433606notconnected141613.83031402606606notconnected141413.33031402618606notconnected141814.34031402629606notconnected141413.33031402631606notconnected141914.590314…

[转]在C#中像Python一样编写TensorFlow机器学习代码

机器学习是一个令人激动人心的领域,一直有新的技术突破。研究人员不断推动机器智能的提升,教机器如何听说读写——这些曾经是我们人类专属的技能。机器学习的首选语言是Python,最受欢迎的库是Google的TensorFlow。几乎所有的代码示例都是用Py…

【土地评价与土地管理】教案 第一章:土地评价要素的选择

文章目录 1.1 土地构成要素与其农业利用1、光能条件2、热量条件3、降水条件1.1 土地构成要素与其农业利用 1、光能条件  光能是绿色植物进行光合作用和生物运动发展的主要能源  太阳辐射、日照时数  太阳辐射量随地域和季节变化较大,导致了土地利用的多样性和土地资源…

Blazor University (33)表单 —— EditContext、FieldIdentifiers

原文链接:https://blazor-university.com/forms/editcontext-fieldidentifiers-and-fieldstate/EditContext、FieldIdentifiers 和 FieldState请注意,对于那些希望了解 Blazor 如何“在后台”工作的人来说,这是一个高级主题。无需了解此信息即…

团队项目开发篇章8

例会时间:2016.11.3 整理:姬索肇 例会照片 每个人的工作 任务分配 我们今天与王鹿鸣学长和李云涛学长针对团队开发过程中遇到的问题进行了讨论,非常感谢学长们的热心帮助,同时我们也被他们强大的编程能力所折服~ 在这里为学长们点…