使用Try.NET创建可交互.NET文档

原文地址:Create Interactive .NET Documentation with Try .NET[1] 

原文作者:Maria 

译文地址:https://www.cnblogs.com/lwqlun/p/10894497.html 

译者:Lamond Lu

背景

当我们编写开发人员使用的文档时,我们需要捕捉他们的兴趣,并引导他们尽快走上成功的道路。开发人员生态系统一直在为社区提供可交互的文档,用户可以一个地方阅读文档,运行代码并进行编辑。

在过去的2年里,.NET语言团队一直在不断发展Try .NET, 以支持在线和离线的交互式文档。

什么是Try .NET

Try .NET是一个基于.NET Core的交互式文档生成器。

640?wx_fmt=png

Try .NET 在线版

2017年9月,Try .NET第一次在docs.microsoft.com[2]中使用,开发人员可以使用Azure Container实例运行代码。然而在过去的5个月内,我们改用Blazor和Web Assembly作为代码执行客户端。

你可以自己访问如下链接[3], 并打开开发者工具。在控制台标签页中,你可以看到如下信息WASM:Initialized, 切换到网络标签页,你将看到所有在客户端执行的DLL。

640?wx_fmt=png

控制台标签页: *WASM Initialized*

640?wx_fmt=png

网络标签页: DLLs

Try .NET离线版

对我们而言,离线版和在线版一样的重要。针对离线体验,对我们而言,创建一种可以融入内容作者工作流程的体验是非常重要的。

在我们的调查结果中,我们注意到内容开发人员(content developers)在创建开发人员文档时,经常使用2种说明方式

•一个用户可以下载并运行的实例。•一些Markdown文件,其中包含一系列说明,以及从代码库复制黏贴的的代码片段。

Try .NET提供了全局工具dotnet try, 以方便.NET开发人员创建可交互的Markdown文件。

为了使你的Markdown文件具有交互性,你需要安装.NET Core的SDK, 全局工具dotnet try, 以及Visual Studio / VS Code。

640?wx_fmt=png

我们该怎么做?

扩展Markdown

在Markown文件中,你会使用隔离代码块来突出显示代码段。在代码块的前后,你会使用```来包裹它们。你可以添加可选的语言标识符,启用针对代码段的语法突出显示。

例:C#的代码块

``` cs 	
var name ="Rain";	
Console.WriteLine($"Hello {name.ToUpper()}!");	
```

使用Try .NET, 我们可以扩展隔离代码块,给它添加一些额外的参数。

``` cs --region methods --source-file .\myapp\Program.cs --project .\myapp\myapp.csproj 	
var name ="Rain";	
Console.WriteLine($"Hello {name.ToUpper()}!");	
```

这里我们使用了3个参数

--region参数 - 指定一个C#的分块(region)--source-file参数 - 指定程序文件的目录--project参数 - 指定项目文件和引用的系统程序集

因此,以上示例中,我们做的事情是,当你运行Try .NET的解析你的Markdown文件的时候,程序会去尝试引用Program.cs文件中名为methods的分块代码。

使用#regions

在Markdown中,我们扩展了代码块,提供了--region参数,用它可以指定C#代码中的分块(region)。 所以,你的Program.cs文件看起来可能是这样的。

using System;	namespace HelloWorld	
{	class Program	{	static void Main(string[] args)	{	#region methods	var name ="Rain"	Console.WriteLine($"Hello{name.ToUpper()}!");  	#endregion	}	}	
}

dotnet try verify

dotnet try verify是一个文档编译器。使用这个命令,你可以确保每个代码块都能正常工作,并且和项目代码保持一致。

dotnet try verify命令的目的是为了验证你的文档按照你期望的样子工作。

通过使用dotnet try verify命令,你可以检测Markdown文件并编译错误。例如,如果我将之前代码中移除一个分号,并且将methods代码分块改名为method。现在如果运行编译器,会出现以下错误。

640?wx_fmt=png

尝试使用全局工具dotnet try

dotnet try现在已经可以使用了。这是一个dotnet try全局工具的早期预览版,你可以从我们的仓储[4]克隆代码。

入门

•克隆代码仓储•签出Samples分支•安装.NET Core 2.1或3.0预览版•打开控制台窗口•安装Try .NET全局工具

dotnet tool install --global dotnet-try --version 1.0.19264.11

更新dotnet try也很简单,只需要运行如下命令

dotnet tool update -g dotnet-try

定位到当前仓储的Samples目录,输入dotnet try

640?wx_fmt=png

浏览器会自动打开

640?wx_fmt=png


Try .NET现在开源了

现在Try.NET已经在Github上开源了!由于我们仍处于早期开发阶段,所以目前我们无法接受任何功能的Pull Request, 但我们打算在未来这么做。请随时在我们的Issue列表中提交Bug报告。 如果你有任何功能建议,请在我们的Issue列表中使用社区建议的标签提交。

References

[1] Create Interactive .NET Documentation with Try .NET: https://devblogs.microsoft.com/dotnet/creating-interactive-net-documentation/
[2] docs.microsoft.com: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/
[3] 链接: https://docs.microsoft.com/dotnet/csharp/tutorials/intro-to-csharp/hello-world?tutorial-step=5
[4] 仓储: https://github.com/dotnet/try

640?wx_fmt=jpeg


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

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

相关文章

Link-Cut Tree

Link-Cut Tree 概述. LCT是一种支持动态维护树上路径信息的数据结构,其本质是实链剖分,通过其他数据结构维护实链的信息达到维护路径及一些子树信息的效果(通常为splay) 刚开始学的时候感觉很难,但做过几道题了解套…

ASP.NET Core模块化前后端分离快速开发框架介绍

源码地址GitHub:https://github.com/iamoldli/NetModular演示地址地址:http://118.24.75.170:6220/账户:admin密码:admin前端框架演示地址(临时)地址:http://progqx5cu.bkt.clouddn.com/skins/index.html#/账户&#x…

[POJ2888] Magic Bracelet

[POJ2888] Magic Bracelet 题目描述 简要题意:给圆上个点染色,颜色有种,其中对颜色不能相邻,循环同构,多组数据,询问染色方案数。 Solution 大概就是一道挺显然的Burnside题(一般染色&#x…

使用命令行导出 SQL Server 数据层应用程序

点击上方蓝字关注“汪宇杰博客”我们可以使用 SSMS 导出 SQL Server 数据库的数据层应用程序。我在本地机器上使用这种方法已经有好几年了。如果不知道什么是 DAC,您可以参考 Microsoft 文档:https://docs.microsoft.com/en-us/sql/relational-databases…

Codeforces 1065 E. Side Transmutations

Codeforces 1065 E. Side Transmutations 题目描述 题意:一个字符串长度为,字符集大小为 ,再给出种交换方式,表示可以交换。如果两个不同的串能够通过任意的交换方式得到相同的串,则视为相同,求方案数。…

P1 用reactjs和bootstrap创建页面IDE

文章目录页面IDE展示:要求:安装好Node.jsreactjs组件化开发页面IDE展示: 要求: 希望能够达到eclipse辅助编程的功能 关键字提醒,高亮 1, 有类似C语言的语法结构 2, 支持变量绑定 3,…

所以Apache基金会不受美国法律约束?

开源中国昨天发布的一篇文章《开源界也要注意,Apache 基金会与 GitHub 都受美国法律约束》引发了开源届乃至整个 IT 行业的热烈讨论,其中有个别声音认为文章的说法有误,甚至制造了恐慌。文中我们引用了两处内容,分别是 Apache 软件…

C#中的Explicit和Implicit了解一下吧

今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);。貌似很久没用过这种隐式转换的写法了,因此重新温习一下C#中转换相关的知识。作者:依乐祝原文地址:https://www.cnblogs.com…

Dapper的正确使用姿势

本文demo适用于MySQL优点高性能、易排查、易运维、灵活可控缺点和EF相比,手写sql当修改表结构不易发现bug。习惯了EF后再来使用Dapper,会很难适应那种没有了强类型的安全感。不过可以用单元测和心细来避免。问题:IDbConnection需不需要手动Op…

[NewLife.XCode]百亿级性能

NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代…

Web API 速率限制(一)

导读当您API有大量消费者或者请求量猛增到影响程序可用性的时候,您可能需要对API进行速率限制。所以对API进行限速的在于:在增加可靠性和可用性的同时来保护基础架构,你不希望某个恶意的API消费者或者差劲的API客户端开发者通过Dos攻击把你的…

构建简单的微服务架构

前言 本篇仅作引导,内容较多,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读。如下图所示:文档官网地址:docs.xin-lai.com目录总体介绍微服务架构的好处 微服务架构的不足(这个时候…

读《代码整洁之道》

什么是整洁代码代码的质量非常重要,糟糕的代码有可能会毁了一个公司。对于一个很注重代码质量的人来说呆在一个只关注交付而不关注代码质量的公司是很痛苦的。什么是整洁的代码,不同的人又不同的定义。我认为整洁的代码应该是符合所使用语言代码规范的&a…

在 DotNetty 中实现同步请求

一、背景DotNetty 本身是一个优秀的网络通讯框架,不过它是基于异步事件驱动来处理另一端的响应,需要在单独的 Handler 去处理相应的返回结果。而在我们的实际使用当中,尤其是 客户端程序 基本都是 请求-响应 模型,在发送了数据时候…

ASP.NET Core 中间件

1.前言中间件(middleware)是一种装配到应用管道以处理请求和响应的组件。每个组件:●可选择是否将请求传递到管道中的下一个组件。●可在管道中的下一个组件前后执行工作。请求委托(request delegates)用于建立请求管道…

.Net Core实现的文档数据库RavenDb

说到文档数据库,大家能想到很多,MongoDb,coudDb。如果只是文档的话,甚至可以使用对象存储,阿里的oss,腾讯cos。但是这里小编选择这RavenDb,原因是对象存储下行太贵了(来自穷逼的绝望)。MongoDb据说非常占用…

Web Template Studio 发布!在 VS Code 中轻松创建 Web 应用

作为一个 Web 应用开发者,Scaffolding Tool(脚手架工具)一定是在创建项目时的重要工具。许多开发者会习惯于使用基于 CLI 的脚手架工具来创建 Web 应用,也有许多开发者喜欢使用类似于 VS IDE 的基于 UI 的 Wizard 向导。近期&…

再多迷茫,不如静下来好好学习

背景前不久,我有幸看到了CSDN知名博主“沉默王二”写的一篇博客《你的青春,值得先给小型创业公司吗?》,这篇博客介绍了他从苏州回到内地小城洛阳之后,虽然远离了互联网的主阵地,但是依然保持学习的态度&…

Web API 速率限制(二)- 令牌桶算法简介

前情提要上一篇文章里简单介绍了什么是Web API的速率限制,和限速策略需考虑的问题,最后还介绍了ASP.NET Core 的一个常用限速库。。。。。。。的名字。实施策略如果你想要建立一个限速系统,首先要确保限速系统不会增加API的响应时间。为了保证…

让 Ocelot 与 asp.net core “共存”

Intro我们的 API 之前是一个单体应用,各个模块的服务是通过 Assembly 集成在一起,最后部署在一个 web server 下的。我们已经在拆分服务并且在 Ocelot 的基础上封装了我们自己的网关,但是服务还没有完全拆分,于是有这么一个需求&a…