回归编程本源:使用DOS命令和VSCode编写C#程序

在现代软件开发工具的辅助下,编程似乎变得自动化,代码仿佛自己就能编写出来。然而,对于拥有超过12年专业经验的C#.NET应用开发者来说,有时可能会渴望回归编程的本质,体验没有自动化工具辅助的编程乐趣。本文将介绍如何使用DOS命令和Visual Studio Code编写一个简单的C#程序,包括创建类库和控制台应用程序,并使用CSC编译器进行编译。

现代软件开发工具,如自动补全、调试器和智能感知等,极大地简化了代码编写过程。但本文不讨论这些现代工具的利弊,而是简要描述如何使用原始的DOS命令,通过Visual Studio Code编写C#库和控制台应用程序,并使用CSC编译工具进行编译。

为什么选择Visual Studio Code

Visual Studio Code是一个轻量级的代码编辑器,它内置了项目浏览器,可以简化对项目文件的访问。它还具有简单的终端和控制台部分,可以在同一个应用程序窗口内编写代码和执行命令。这对于使用大屏幕的开发者来说非常方便。与C#开发者常用的增强功能不同,它没有拼写检查、智能感知、内置可附加的调试器、自动补全等功能。

创建C#类库和控制台应用程序

要创建一个简单的.NET C#应用程序,只需要一个可编译的C#文本文件和CSC编译工具。CSC是处理文本C#代码并生成二进制代码(可执行文件或库)的编译器。MSBuild是一个实用工具,它允许为CSC编译器创建可读的配置。

配置项目构建过程

打开Visual Studio Code,按下Ctrl+`打开终端。首先创建一个名为PizzaLib的文件夹,然后创建.vscode文件夹,并在其中创建tasks.json文件。接下来,创建PizzaShop.cs和DeliveryService.cs文件,并创建一个名为bin的文件夹。

{ "version": "2.0.0", "tasks": [ { "label": "pizzalibbuild", "command": "C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\CSC.exe", "type": "shell", "args": [ "/t:library", "/out:bin/PizzaLib.dll", "*.cs" ], "group": { "kind": "build", "isDefault": true } } ] }

编写库代码

PizzaLib.dll库负责制作披萨并将其交付给客户。需要定义两个类:PizzaShop.cs和DeliveryService.cs。PizzaShop.cs负责订购和制作披萨,而DeliveryService.cs负责将披萨交付给客户。

using System; namespace PizzaLib { public class PizzaShop { public void OrderPizza() { Console.WriteLine("Pizza Mozzarella with cheese. Your order is being processed."); } public void CookPizza() { Console.WriteLine("Cooking delicious pizza..."); } } } using System; namespace PizzaLib { public class DeliveryService { public void Deliver() { Console.WriteLine("Delivering to customer."); } } }

构建类库

编写完代码后,需要配置构建任务。按下Ctrl+Shift+B构建库。构建完成后,库被编译,可以被另一个应用程序(在本例中为控制台应用程序)引用。

使用PizzaLib的控制台应用程序

打开另一个Visual Studio Code实例,为控制台应用程序创建类似的结构。创建PizzaConsoleTest文件夹,并在其中创建.vscode文件夹和tasks.json文件。然后创建PizzaConsoleTest.cs文件,并创建一个名为bin的文件夹。

{ "version": "2.0.0", "tasks": [ { "label": "pizzaconsoletestbuild", "command": "C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\CSC.exe", "type": "shell", "args": [ "/r:\"../PizzaLib/bin/PizzaLib.dll\",\"../PizzaLib/bin/PizzaLib.dll\"", "/out:bin/PizzaConsoleTest.exe", "*.cs" ], "group": { "kind": "build", "isDefault": true } } ] } { "version": "0.2.0", "configurations": [ { "name": "PizzaConsoleTestLauncher", "type": "clr", "request": "launch", "preLaunchTask": "pizzaconsoletestbuild", "program": "${workspaceFolder}/bin/PizzaConsoleTest.exe", "args": [], "console": "internalConsole", "stopAtEntry": false, "internalConsoleOptions": "openOnSessionStart" } ] }

编写控制台应用程序代码

在PizzaConsoleTest.cs应用程序文件中添加代码,使用PizzaShop库来订购和交付美味的披萨。

using System; using PizzaLib; namespace PizzaConsoleTest { public class Program { public static void Main(string[] args) { Console.WriteLine("Ordering Pizza with PizzaLib"); PizzaShop pizzaShop = new PizzaShop(); pizzaShop.OrderPizza(); pizzaShop.CookPizza(); DeliveryService deliveryService = new DeliveryService(); deliveryService.Deliver(); } } }

复制库文件

如果tasks.json文件配置正确,CSC编译器将使用引用的PizzaLib.dll库。接下来,需要将该库复制到控制台应用程序的bin文件夹中,以便在控制台应用程序执行时可用。

copy /Y "..\\..\\PizzaLib\\bin\\PizzaLib.dll" "bin\\PizzaLib.dll"

执行控制台应用程序

如果一切配置正确,按下Ctrl+F5将执行控制台应用程序,并显示以下结果:

Ordering Pizza with PizzaLib Pizza Mozzarella with cheese. Your order is being processed. Cooking delicious pizza... Delivering to customer. The program '[7152] PizzaConsoleTest.exe' has exited with code 0 (0x0).

要点

命令行界面和简单的文本编辑器对于开发多模块、分布式的Web应用程序来说可能会非常困难,因为配置复杂和代码复杂性。这种简单的实践只是一个兴趣点。复杂的开发环境,具有现代编码增强功能,为构建庞大的系统提供了更多的能力和灵活性。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485