如果你是开发个人项目,那就直接用 Visual Studio Community 版本吧,对个人免费,对小团体免费,不需要这么折腾。

如果你是 Mac / Linux 用户,不想用 Visual Studio for Mac 版;或者不想用 Visual Studio for Windows 版那么重磅的 IDE 来开发简单的 .NET Core 程序;或者你就是想像我这么折腾,那我们就开始吧!


  1. 点击这里下载正式或者预览版的 .NET Core 然后安装

  2. 点击这里下载 Visual Studio Code 然后安装

  3. 在 Visual Studio Code 里安装 C# for Visual Studio Code 插件(步骤如下图所示)

搜索的时候,推荐使用 OmniSharp 关键字,因为这可以得到唯一的结果,你不会弄混淆。如果你使用 C# 作为关键字,那需要小心,你得找到名字只有 C#,点开之后是 C# for Visual Studio Code 的那款插件。因为可能装错,所以我不推荐这么做。

对于新版的 Visual Studio Code,装完会自动启用,所以你不用担心。我们可以后续步骤了。

准备一个空的文件夹,这个文件夹将会成为我们解决方案所在的文件夹,也就是 sln 文件所在的文件夹。在这个空的文件夹中打开 VSCode,然后打开 VSCode 的终端。

在 VSCode 中的终端中输入:

> dotnet new console -o Walterlv.Demo

这样会在当前的文件夹中创建一个 Walterlv.Demo 的子文件夹,并且在此文件夹中新建一个名为 Walterlv.Demo 的控制台项目。

如果你观察我们刚刚创建的项目,你会发现里面有一个 csproj 文件和一个 Program.cs 文件。csproj 文件是 Sdk 风格的项目文件,而 Program.cs 里面包含最简单的 Hello World 代码:

using System;

namespace Walterlv.Demo{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("Hello World!");        }    }}

我们会考虑在一个子文件夹中创建项目,是因为我们会一步步创建一个比较复杂的解决方案,用以演示比较完整的使用 VSCode 开发 .NET 程序的过程。

我们现在创建一个在 Visual Studio 会特别熟悉的解决方案,sln 文件。

使用以下命令创建一个解决方案文件:

现在,这个解决方案文件还是空的,不包含任何项目,于是我们把我们一开始创建的 Walterlv.Demo 项目加入到此 sln 文件中。

使用以下命令添加:

> dotnet sln add .\Walterlv.Demo\Walterlv.Demo.csproj

于是,我们的解决方案中,就存在一个可以运行的控制台项目了。

理论上,你按下 F5,选择 .NET Core 后就能自动生成调试所需的 launch.json 和 tasks.json 文件:

  • 让你的 VSCode 具备调试 C# 语言 .NET Core 程序的能力

如果不能生成所需的文件,你可以使用以下博客中的方法,手动添加这两个文件:

  • 手工编辑 tasks.json 和 launch.json,让你的 VSCode 具备调试 .NET Core 程序的能力

在经过以上两篇博客中的方法之后,你将可以跑起来你的程序。

如果遇到了编译错误……呃这么简单的程序怎么可能遇到编译错误呢?一定是因为之前的操作有问题。可以考虑删除 bin 和 obj 文件夹,然后输入以下命令自行编译:

这个命令会还原 NuGet 包,然后使用 .NET Core 版本的 MSBuild 编译你的解决方案。在此之后,你并不需要总是输入此命令,只需要像 Visual Studio 一样按下 F5 即可调试。

现在我们演示如何引用项目。

首先使用以下命令创建一个类库项目:

> dotnet new classlib -o Walterlv.Library

将其添加到 sln 中。

> dotnet sln add .\Walterlv.Library\Walterlv.Library.csproj

于是我们的目录结构现在是这样的(稍微改了一点代码)。

然后让我们的 Walterlv.Demo 项目引用这个刚刚创建的项目:

> dotnet add Walterlv.Demo reference .\Walterlv.Library\

现在,我们即可在 Program.cs 中使用到刚刚 Class1.cs 中编写的方法(见上面截图中写的方法)。

不过,当你写下 Class1 后,会没有此名称,但有快速操作提示可以自动添加命名空间(就像没有装 ReSharper 的 Visual Studio 的效果一样)。

这时再按下 F5 运行,可以看到多输出了一个 walterlv is a 逗比 这样的提示,我们成功使用到了刚刚引用的类。

接下来介绍如何引用 NuGet 包。

> dotnet add Walterlv.Demo package Newtonsoft.Json

这样可以给 Walterlv.Demo 项目引用 Newtonsoft.Json 包。

接下来就像前面一节我们所描述的那样使用这个包里面的类就好了。

原文地址:https://blog.walterlv.com/post/develop-an-app-using-vscode-and-dotnet-cli.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

使用 dotnet 命令行配合 vscode 完成一个完整 .NET 解决方案的编写和调试相关推荐

  1. 让 dotnet 命令行输出作为英文的方法

    在我的设备上,默认的 dotnet 命令行都是输出中文,如我输入 dotnet build 命令,里面的错误提示也是中文.在我想要和国外的小伙伴报坑时,如果里面有很多中文,我觉得他将会看不懂,从而不理 ...

  2. 关于虚拟机纯命令行centos解决web上网认证的解决方案

    关于虚拟机纯命令行centos解决web上网认证的解决方案 虚拟机版本:CentOS Linux release 7.1.1503 (Core) 在我们学校,有校园网的存在,导致我在配置虚拟机的时候遇 ...

  3. 利用vue-cli配合vue-router搭建一个完整的spa流程

    好文章备忘录: 转自:https://segmentfault.com/a/1190000009160934?_ea=1849098 demo源码:https://github.com/1590123 ...

  4. vscode linux命令行启动,在命令行启动vscode

    1.windows使用 code . 命令打开vscode 1.打开vscode安装位置,进入bin文件夹,复制路径 eg:E:\Microsoft VS Code\bin: 2.回到桌面,右键我的电 ...

  5. 图解命令行手动编译构建一个win32汇编程序

    首先安装masm32 V11.0:安装完后出现下列对话框: 图没截好:下面图的 k. 是 link. :ktopPath是DesktopPath: 此段代码的含义是用WScript创建了一个快捷方式, ...

  6. Macbook 中如何通过命令行打开 vscode

    作为 vscode 的重度用户,习惯通过命令启动 vscode,即: code . 在 Mac 中,设置方法如下: (1)打开 VSCode,使用快捷键 command + shift + p 打开命 ...

  7. mac用vscode打开html,Mac 命令行打开VsCode

    释放双眼,带上耳机,听听看~! 命令行 命令行命令安装 安装 VSCode Shell 命令,按 Shift+Cmd+P 搜索 shell command install 回车即可. 命令行帮助 Vi ...

  8. 在命令行启动vscode

    1.windows使用 code . 命令打开vscode 1.打开vscode安装位置,进入bin文件夹,复制路径 eg:E:\Microsoft VS Code\bin: 2.回到桌面,右键我的电 ...

  9. git命令行切换到某一个提交版本的分支

    通常,我们需要在命令行下切换 分支,一般而言,我们将远程代码克隆(git clone http://xxx.com/project)到本地之后,切换分支使用git checkout -b branch ...

最新文章

  1. .Net Framework 3.5 结构图
  2. python小项目推荐项目-推荐 10 个有趣的 Python 项目
  3. Android 4.4 中 WebView 使用注意事项
  4. java 常用十种设计模式示例归纳 | 已打包请带走
  5. MySQL日期及时间加减函数
  6. Node + ts + puppeteer e2e前端自动化测试
  7. directly test Gateway frontend service in AG3 SICF
  8. 【XSY1594】棋盘控制 概率DP
  9. oracle package 函数,Oracle 存储过程procedure,函数function用法,以及package用法
  10. 从哲学源头思考自动驾驶网络架构设计
  11. 2018年三月份计算机一级考试试题,2018年3月计算机一级考试MSOFFICE模拟试题(4)
  12. Vue之$options
  13. OO思想(只留做自己看理解)
  14. 星号密码查看 android,侠客密码查看器怎么查看已输入的星号密码
  15. CAD迷你看图2019破解版|CAD迷你看图2019R5中文破解版下载
  16. 为什么要远离色情信息(转载)
  17. 技师学院计算机老师,技师学院计算机工程系组织开展观摩课活动
  18. Xmind用例导入到TAPD的方案(附代码)
  19. high sierra php,關於macOS High Sierra 10.13 中,XAMPP php7 安裝memcache的問題
  20. python入门学习_PythonTip

热门文章

  1. facebook_如何清除您的Facebook搜索记录
  2. php 执行文件tar打包,利用tar for windows对大量文件进行快速打包
  3. 深入MySQL存储引擎分析锁和排序的原理
  4. Go语言实时GC - 三色标记算法
  5. Android渠道包自动化验证
  6. gulp与webpack的区别
  7. 如何判断 .NET Core 应用程序是以管理员身份运行
  8. C# 修改配置文件进行窗体logo切换
  9. EF Core 6 简化的数据库上下文注册
  10. 徒手打造基于Spark的数据工厂(Data Factory):从设计到实现