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

原文作者:Maria

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

译者:Lamond Lu

背景

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

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

什么是Try .NET

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

Try .NET 在线版

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

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

控制台标签页: *WASM Initialized*

网络标签页: DLLs

Try .NET离线版

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

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

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

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

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

我们该怎么做?

扩展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。现在如果运行编译器,会出现以下错误。

尝试使用全局工具dotnet try

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

入门

  • 克隆代码仓储
  • 签出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

浏览器会自动打开

Try .NET现在开源了

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

使用Try.NET创建可交互.NET文档的更多相关文章

  1. (转)创建和查看Javadoc文档

    原地址:http://jinnaxu-tju-edu-cn.iteye.com/blog/667177 Javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类.方法.成员等注释形成一个和源代 ...

  2. ABP给WebApi添加SwaggerUI,生成可交互接口文档

    在ABP模板项目中,通过SwaggerUI可以为我们的WebApi生成动态的可交互接口文档页面,从而可以很方便的测试调用我们的WebApi接口. 一.集成Swagger 右键项目YoYo.Web,打开 ...

  3. 1.2.3 创建Cocos2D-iPhone的帮助文档

    http://book.51cto.com/art/201303/383957.htm <Cocos2D权威指南>第1章开始前的准备工作,本章我们将介绍什么是Cocos2D以及有关Coco ...

  4. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  5. php创建读取 word.doc文档

    创建文档; <?php $html = "this is question"; for($i=1;$i<=3;$i++){ $word = new word(); $w ...

  6. dom4j创建和解析xml文档

    DOM4J解析  特征: 1.JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能. 2.它使用接口和抽象基本类方法. 3.具有性能优异.灵活性好.功能强大和极端易用的特点. 4.是一个开 ...

  7. 用R创建Word和PowerPoint文档--转载

    https://www.jianshu.com/p/7df62865c3ed Rapp --简书 Microsoft的Office软件在办公软件领域占有绝对的主导地位,几乎每个职场人士都必须掌握Wor ...

  8. MFC中 创建基于CFormView的文档视图程序

    在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...

  9. Open Cascade创建自己的MFC文档程序

    项目初始设置在Visual studio中创建一个单文档MFC项目(本例以MFCTest为名称): 在项目属性的VC++页面设置包含目录.库目录,在链接器的输入中添加OCC库目录下的所有.lib文件名 ...

随机推荐

  1. new和delete的基本用法

    前言 new和delete是C++中用来动态管理内存分配的运算符,其用法较为灵活.如果你对它们的几种不同用法感到困惑,混淆,那么接着看下去吧. 功能一:动态管理单变量/对象空间 下面例子使用new为单 ...

  2. NS3网络仿真(11): ARP

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 ARP(Address ResolutionProtocol,地址解析协议)协议的基本功能就是通过 ...

  3. swift3.0系列完整demo代码库

    https://github.com/soapyigu/Swift30Projects 感谢作者

  4. EasyRTMP手机直播推送rtmp流flash无法正常播放问题

    本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52960750 问题简介 EasyRTMP是EasyD ...

  5. 九度OJ 1098:字母统计 (计数)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3720 解决:1809 题目描述: 输入一行字符串,计算其中A-Z大写字母出现的次数 输入: 案例可能有多组,每个案例输入为一行字符串. 输 ...

  6. wepy原理研究

    像VUE一样写微信小程序-深入研究wepy框架 https://zhuanlan.zhihu.com/p/28700207 wepy原理研究 虽然wepy提升了小程序开发体验,但毕竟最终要运行在小程序 ...

  7. ftp上传文件不能上传到指定的文件夹

    首先是,使用ftp创建连接,这一点没有错误,但是在切换目录创建文件夹的时候出现了问题. 指定创建的文件夹,总是创建失败,切换目录同样失败.最后查看文件夹的权限才知道,没有权限的问题: 然后给img文件 ...

  8. C++ ini解析器

    在gitee上找到的一个很好用的ini文件解析器,纯C++代码,移植方便. 项目地址:https://gitee.com/sollyu/IniParser 稍微修改了下,去掉了Windows平台相关定 ...

  9. Kafka理论学习

    Kafka Consumer设计解析 http://www.jasongj.com/2015/08/09/KafkaColumn4/

  10. Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。

    Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...