开发语言之美

187 阅读8分钟

开发语言之一-.net语言

一、语言介绍

.NET是一种用于构建多种应用的免费开源开发平台,可以使用C#、F#或Visual Basic编写.NET应用。

.NET用于生成多种类型的应用程序和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP)、游戏、物联网 (IoT)、机器学习、控制台应用、Windows服务。.NET类库在不同应用和应用类型中共享功能,无论构建哪种类型的应用,代码和项目文件看起来都一样,可以访问每个应用的相同运行时、API和语言功能

二、命令

.NET语言是一种广泛使用的编程语言,它有许多命令和工具,以下是一些常用的.NET命令和工具:

.NET Framework:.NET Framework是.NET语言的一种运行时环境,它包含了许多类库和工具,用于开发和管理.NET应用程序。

.NET SDK:.NET SDK是.NET Framework的开发工具包,它包含了一组工具和库,用于创建和调试.NET应用程序。

Visual Studio:Visual Studio是一个集成开发环境(IDE),它支持多种编程语言,包括.NET语言。它包含了一组工具和编辑器,用于创建、调试和部署应用程序。

ASP.NET:ASP.NET是一个用于创建Web应用程序的框架,它基于.NET Framework,并提供了许多功能和工具,用于创建和部署Web应用程序。

.NET Core:.NET Core是一个跨平台的开源运行时环境,它支持多种操作系统,包括Windows、Linux和macOS等。

.NET Command Line Tools:.NET Command Line Tools是一个用于创建和管理.NET应用程序的命令行工具,它提供了一组命令和工具,可以在命令行界面中执行。

.NET API:.NET API是.NET Framework提供的一组应用程序编程接口(API),它包含了大量的类和方法,用于创建和管理应用程序。

.NET MVC:.NET MVC是一个用于创建Web应用程序的模型-视图-控制器(MVC)框架,它提供了一个可扩展、可定制的Web应用程序架构。

.NET Web API:.NET Web API是一个用于创建Web应用程序的API,它提供了一组功能强大的类和方法,用于处理HTTP请求和响应。

以上是一些常用的.NET命令和工具,它们都是开发和管理.NET应用程序的重要工具和框架。

好的,以下是一些更多的.NET命令和工具:

Entity Framework:Entity Framework是一个用于数据访问的框架,它提供了一种对象关系映射(ORM)的方式来访问数据库,使得开发人员可以更加方便地进行数据访问。

NuGet:NuGet是一个用于管理.NET应用程序依赖项的包管理器,它可以帮助开发人员获取、安装和更新所需的库和组件。

PowerShell:PowerShell是一个用于管理.NET应用程序的命令行工具,它提供了一种强大的脚本语言,用于自动化和管理系统。

IIS:IIS是一个用于创建和管理Web应用程序的Web服务器,它支持多种Web应用程序框架,包括ASP.NET和PHP等。

SQL Server:SQL Server是一个用于管理数据的数据库系统,它支持多种数据操作和管理任务,包括数据查询、存储和更新等。

ASP.NET MVC:ASP.NET MVC是一个用于创建Web应用程序的模型-视图-控制器(MVC)框架,它提供了一个可扩展、可定制的Web应用程序架构,与Web API一起使用可以更好地进行Web开发。

Roslyn:Roslyn是一个用于编译和重构.NET代码的工具,它提供了一种基于语法树和语义分析的方式来分析和重构代码。

.NET Portability Framework:.NET Portability Framework是一个用于跨平台开发的框架,它提供了一组标准化的API和库,使得开发人员可以更加方便地跨平台开发应用程序。

以上是一些更多的.NET命令和工具,它们都为开发人员提供了不同的功能和工具,使得可以更加方便地进行.NET应用程序的开发和管理。

.NET相关的其他工具和库:

Blazor:Blazor是一个用于创建单页应用程序(SPA)的开源框架,它基于.NET和WebAssembly,可以使得开发人员使用C#语言来创建前端应用程序。

Owin:Owin是一个用于处理ASP.NET应用程序的Web框架,它提供了一种标准化的方式来处理HTTP请求和响应,使得开发人员可以更加方便地进行Web开发。

Roslyn Analyzers:Roslyn Analyzers是一组用于静态代码分析的工具,它可以帮助开发人员检测代码中的潜在问题,如代码重复、潜在的异常等。

.NET Compact Framework:.NET Compact Framework是一个用于移动设备的精简版运行时环境,它支持多种移动设备,包括Windows手机和平板电脑等。

.NET Micro Framework:.NET Micro Framework是一个用于嵌入式系统的运行时环境,它提供了一种轻量级的方式来开发嵌入式系统应用程序。

.NET Class Library:.NET Class Library是一组用于创建和操作数据库的类库,它提供了一组丰富的数据操作功能,如ADO.NET和Entity Framework等。

.NET Core Runtime:.NET Core Runtime是一个用于运行.NET Core应用程序的运行时环境,它支持多种操作系统,包括Windows、Linux和macOS等。

.NET Standard:.NET Standard是一组用于创建跨平台应用程序的API和库,它提供了一组标准化的功能和API,使得开发人员可以更加方便地跨平台开发应用程序。

以上是一些与.NET相关的其他工具和库,它们都为开发人员提供了不同的功能和工具,使得可以更加方便地进行.NET应用程序的开发和管理。

.NET的常用命令:

msbuild:Msbuild是.NET开发人员用于构建和编译项目的命令行工具,它支持多种项目格式,如C#、VB.NET等。

NuGet:NuGet是一个用于管理.NET应用程序依赖项的包管理器,它可以帮助开发人员获取、安装和更新所需的库和组件。

PowerShell:PowerShell是一个用于管理.NET应用程序的命令行工具,它提供了一种强大的脚本语言,用于自动化和管理系统。

Iis:Iis是一个用于创建和管理Web应用程序的Web服务器,它支持多种Web应用程序框架,包括ASP.NET和PHP等。
5 Sqlcmd:Sqlcmd是一个用于执行SQL查询和管理数据库的命令行工具,它可以帮助开发人员执行数据迁移、数据备份等操作。

dnx:Dnx是ASP.NET开发人员用于运行和测试项目的命令行工具,它支持多种开发环境,如Windows、Linux等。

dotnet:dotnet是.NET Core开发人员用于构建、运行和管理项目的命令行工具,它提供了一组丰富的功能和命令,如编译、调试、打包等。

fsi:fsi是.NET开发人员用于交互式编程的命令行工具,它提供了一个交互式的编程环境,用于快速测试和调试代码。

以上是一些常用的.NET命令它们都为开发人员提供了不同的功能和工具,使得可以更加方便地进行.NET应用程序的开发和管理。

.NET的常用命令:

诊断命令:

1.1. dotnet --version:显示当前安装的.NET Core SDK版本。

1.2. dotnet --list-runtimes:显示当前系统支持的.NET Core运行时版本。

1.3. dotnet --list-sdks:显示当前系统支持的.NET Core SDK版本。

创建和编译命令:

2.1. dotnet new:创建一个新的.NET Core项目。

2.2. dotnet new --help:显示"dotnet new"命令的帮助文档。

2.3. dotnet build:编译当前项目。

2.4. dotnet build--help:显示"dotnet build"命令的帮助文档。

运行和调试命令:

3.1. dotnet run:运行当前项目。

3.2. dotnet run--help:显示"dotnet run"命令的帮助文档。

3.3. dotnet watch:在调试模式下运行当前项目,当代码文件发生变化时自动重新编译并重新启动应用程序。

3.4. dotnet watch--help:显示"dotnet watch"命令的帮助文档。

打包和发布命令:

4.4 dotnet publish:将当前项目发布为可执行文件或Docker镜像。

4.4 dotnet publish--help:显示"dotnet publish"命令的帮助文档。

5.4 dotnet pack:将当前项目打包为NuGet包或symbols包,以便于分发和调试。

5.4 dotnet pack--help:显示"dotnet pack"命令的帮助文档。

三、.NET的常用命令在代码中的应用示例:

创建和编译命令:

using System.IO;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.Build.Evaluation;  
using Microsoft.Build.Execution;  
using Microsoft.Build.Framework;

var projectFiles = new List<string>(){  
    "Program.cs",  
    "Properties\\AssemblyInfo.cs",  
    "Models\\Person.cs",  
    "Controllers\\HomeController.cs"  
};  
  
var projectFolder = @"C:\MyProject";  
  
foreach (var file in projectFiles) {  
    var filePath = Path.Combine(projectFolder, file);  
    var code = File.ReadAllText(filePath);  
    // 进行代码分析和重构  
    var analyzerResults = new List<Diagnostic>();  
    var tree = CSharpSyntaxTree.ParseText(code);  
    var root = tree.GetCompilationUnitRoot();  
    var semanticModel = root.GetSemanticModel(tree);  
    var options = new CSharpAnalyzerOptions();  
    var analyzer = new MyAnalyzer(options);  
    analyzer.Analyze(tree, semanticModel, out var diagnostics);  
    analyzerResults.AddRange(diagnostics);  
    // 编译代码  
    var project = new Project();  
    project.Name = "MyProject";  
    project.CodeFiles.AddRange(projectFiles);  
    var buildManager = new BuildManager();  
    var results = buildManager.Build(new BuildParameters(project));  
    // 处理编译结果  
    foreach (var result in results) {  
        if (result.OverallResult == BuildResult.Failed) {  
            Console.WriteLine($"编译失败:{result.ErrorCount} 个错误,{result.WarningCount} 个警告");  
        } else if (result.OverallResult == BuildResult.Success) {  
            Console.WriteLine($"编译成功");  
        } else if (result.OverallResult == BuildResult.Skipped) {  
            Console.WriteLine($"编译跳过");  
        }  
    }  
}

API图片.png