FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

Fake 5 提供.NET Core 支持

  • 2018-06-24
  • 本文字数:1508 字

    阅读完需:约 5 分钟

Fake 5 在推出预览版的数个月后于近期发布。该新版本的.NET 应用构建工具重写了内核,做了一些内部改进,并推出了一些新特性。为更好地了解新版本中的改进和特性,InfoQ 采访了 Fake 的维护者 Matthias Dittrich。

InfoQ:是什么促使您推出 Fake 5 版本?

Matthias Dittrich:回顾历史,我感觉使用 Fake 曾是一个巨大的负担,尤其是使用推荐的方法时。因为开发人员必须要学会 Paket、FAKE,并引入build.fsxpaket.dependenciespaket.lock等多个全局文件,进而 Paket 才能另外创建多个文件夹(例如paket-filespackages.paket等),Fake 才能创建.fake文件夹。

这样的架构完全可用,因为所有这些操作背后都有其合理的原因。但这对于一些小型项目或简单的脚本而言无疑过于繁琐。我认为这是妨碍人们采纳 Fake 的一个主要考虑。

在.NET Core 推出之后,我们得以抛弃过去对.NET 的所有认知。开发人员可以发布一个独立的应用,无需依赖于任何已安装的.NET Framework。我感觉到,当前正是重新考虑已有方法的一个很好机会。我开始逐步引导并使用.NET Core 移植去实现 Fake。当然,我们最终也必须要这样做。

由此,发布 Fake 5 的目标主要上是解决上面提及的问题,允许开发人员选择性退出(opt-out)到一种更为简单的工作流。此外,Fake 5 还要解决其它一些长期以来一直存在的突出问题,例如 API 的清理和统一,以及分解为更小的模块。

有人曾为单一项目贡献了一种称为FakeLib的新功能,该软件库已经发展了 5 到 10 年!可能在人们毫不知情的情况下,我们已经蓄势待发。

另一方面,这意味着任何人在每次构建时都需要做全部关联项下载。其中一些关联项,我们并不知道如何在不破坏整个生态系统的情况下进行修复。这个问题应该如何解决?我们现在另辟蹊径了。

InfoQ:现在开发人员可以通过创建自定义模块扩展 Fake。您能详细介绍一下其工作机制吗?

Dittrich: 当然。事实上,这(从用户角度看)非常简单。开发人员所需要做的,仅是在任一 NuGet 源上发布一个.NET(或者 C#、F#等)软件库,并在自己构建脚本的头部使用 Paket 语法引用该软件库。

唯一要满足的需求,就是该软件库应兼容 NetStandard 2.0。

举个例子。如果我安装了.NET SDK、创建了一个名为testfakelib的新文件夹、执行了dotnet new classlib && dotnet pack命令,并上传bin/Debug/testfakelib.nupkg文件到 NuGet,那么这时我就完成了准备工作。

技术上讲,我们在后台使用 Paket 完成繁琐的传递依赖关系解析,并用于发现 Fake/F#脚本编译和运行所需的正确 dll 文件。虽然这有点过分简化了,但至少不会让用户百无聊赖。

InfoQ:该版本的主要特性或改进是什么?

Dittrich:在我看来,Fake 5 的最主要特性如下:

  • 无论开发人员当前使用何种环境,无论他们选择了何种 Fake 引导或安装方式,上手工作都更为容易。
  • FAKE 现在更适用于脚本和小型自动化(我们进一步“扩展”了构建功能)。
  • 开发人员现在可以引入更广泛的 NuGet 生态系统,实现构建的扩展,也易于自身的扩展。

但是做出选择依然并非易事。例如,大量来自于社区的帮助正在实现 API 的清理和模块化。我认为,这些工作的结果值得称赞。

问题在于,我们不可能从一开始就做到完美无瑕。

借助于模块化系统,我们希望能创建更好的模块改进,并在不破坏任何系统的情况下隔离旧模块。

InfoQ:为实现支持.NET Core,您做了哪些改进?

Dittrich:事实上,我并不认为我们必须做的大量工作,仅是为了支持.NET Core。我们只是利用了现有的机会。技术上讲,尤其是自 NetStandard 2.0 推出后,我们大概仅是重新编译了大部分代码。其中的工作乏善可陈。

Fake 官方网站上提供了更多的详细信息,其中包括 Fake 5 发行说明

查看英文原文: Fake 5 Brings .NET Core Support

2018-06-24 04:011426
用户头像

发布了 391 篇内容, 共 122.2 次阅读, 收获喜欢 255 次。

关注

评论

发布
暂无评论
发现更多内容

如何快速实现离散企业全链路数字化管理

华为云开发者联盟

数据采集 华为云IoT 智能制造 黑湖科技 数据中枢

Jira Software 年度总结:12个重要功能大放送!

龙智—DevSecOps解决方案

Jira Atlassian Atlassian Jira

技术升级!国内公有云厂商首个支持保留消息功能

百度开发者中心

物联网

MultipartFile与File的一些事

华为云开发者联盟

spring File 文件 MultipartFile 中转文件

『TDengine2021用户故事』征文活动进入投票阶段!

TDengine

tdengine

一个低成本确保IM消息时序的方法探讨

WorkPlus

虎符推出AMM流动性资金池 支持现货专区做市赚收益

区块链前沿News

流动性 虎符 Hoo 虎符交易所 AMM

内网是什么意思?指什么网?内网需要做等保测评吗?

行云管家

安全 内网 等保测评

尚硅谷2022版Java课程体系,霸气来袭

@零度

Java 尚硅谷

一文读懂HarmonyOS服务卡片怎么换肤

HarmonyOS开发者

HarmonyOS

WTM活动回顾|WomenTechmakers 2021 Courage to Create

江湖老铁

大数据开发之Flink + TiDB

@零度

flink 大数据开发

免费下载!FFA 系列专刊|《Flink CDC 新一代数据集成框架》电子书

Apache Flink

大数据 flink 编程 实时计算 IT

一起看看MySQL中的隐藏列

华为云开发者联盟

MySQL 事务 主键 唯一索引 隐藏列

java开发之Mybatis 快问快答

@零度

mybatis JAVA开发

「元宇宙十万个为什么」:为什么元宇宙值得投资?

WorkPlus

Flink CDC 系列 - Flink MongoDB CDC 在 XTransfer 的生产实践

Apache Flink

大数据 flink 编程 实时计算 IT

ReactNative进阶(二十七):createMaterialTopTabNavigator 顶部导航组件

No Silver Bullet

1月月更 ReactNative

认识 Express 的 res.send() 和 res.end()

编程三昧

JavaScript 前端 nodejs Express 1月月更

迪斯尼《曼达洛人》艺术总监和制作设计师亲自揭秘背后的虚拟场景制作

龙智—DevSecOps解决方案

perforce 曼达洛人 西部世界 虚拟场景

QuanXiang 2022 Q1 开源路线图

全象云低代码

开源 工作流 低代码 表单

龙头整机厂商宝德加入,共建龙蜥社区开源新生态

OpenAnolis小助手

Linux 开源 合作伙伴

jar包与war包的部署

你?

SAE 最佳实践范本:助力视野数科进入云原生“快车道”

Serverless Devs

Serverless SAE

数据安全产品之堡垒机详细介绍-行云管家

行云管家

网络安全 防火墙 数据安全 堡垒机

🏆【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(中)

洛神灬殇

nacos 配置中心 Alibaba 1月日更 Apache alibaba

过年回家前,先签收这份“外挂”

龙智—DevSecOps解决方案

Atlassian Confluence 到期日提醒 confluence插件

TiDB 在国信证券海量数据高并发场景中的实践

PingCAP

焱融科技年度报告如约而至,如 Beijing 初雪

焱融科技

云计算 分布式 云原生 高性能 文件存储

【云图说】DDS读写两步走,带您领略只读节点的风采

华为云开发者联盟

数据库 节点 DDS 文档数据库 DDS读写

PHP 遇见 Serverless,帮你解决这些痛点!

Serverless Devs

  • 扫码添加小助手
    领取最新资料包
Fake 5提供.NET Core支持_.NET_Pierre-Luc Maheu_InfoQ精选文章