百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

dotnet常用命令详解

connygpt 2024-12-13 12:40 10 浏览

命令预览

基础命令

  • new:创建项目
  • restore:恢复依赖
  • build:编译项目
  • publish:生成项目需要的文件准备发布项目
  • run:运行项目
  • test:测试项目
  • vstest:从指定的程序集中运行测试
  • pack:打包代码为nuget包
  • clean:清理项目的输出文件,如:obj、out等
  • sln:执行solution相关的操作
  • help:打印帮助信息
  • watch:运行项目在热重载模式下,即监听文件的变更会自动重启项目
  • format:格式化代码匹配 editorconfig 文件中的设置格式

项目包和引用相关的命令

  • add package:添加或更新项目的外部包引用
  • add reference:添加项目到项目之间的引用关系
  • remove package:移除项目的外部包引用
  • remove reference:移除项目到项目之间的引用关系
  • list package:列出项目或solution的外部包引用
  • list reference:列出项目到项目之间的引用关系

NuGet 相关的命令

  • nuget delete:从服务器中删除或取消列出包
  • nuget locals:命令清除或列出 http 请求缓存、临时缓存或计算机范围的全局包文件夹中的本地 NuGet 资源。
  • nuget push:推送包到nuget服务器并进行发布
  • nuget add source:添加nuget源
  • nuget disable source:禁用nuget源
  • nuget enable source:启用nuget源
  • nuget list source:列出nuget源
  • nuget remove source:移除nuget源
  • nuget update source:更新nuget源
  • nuget verify:验证已签名的 NuGet 包
  • nuget trust:获取或设置 NuGet 配置的受信任签名者
  • nuget sign:使用证书对与第一个参数匹配的所有 NuGet 包进行签名。
  • package search:搜索nuget包
  • nuget why:显示特定包的依赖关系图

Workload相关的命令

  • workload install:安装一个或多个工作负载
  • workload list:列出已安装的工作负载
  • workload update:更新已安装的工作负载
  • workload restore:还原项目所需的工作负载
  • workload repair:修复已安装的工作负载
  • workload uninstall:卸载已安装的工作负载
  • workload search:搜索可用的工作负载
  • workload clean:删除可能已从之前的更新和卸载中保留的工作负载组件

高级命令

  • sdk check:列出最新可用的 .NET SDK.NET Runtime 版本
  • dev-certs:生成一个自签名的证书来启用https以供开发环境下使用

工具管理命令

  • tool install:安装指定的 .NET 工具
  • tool list:列出所有已安装的工具
  • tool update:更新已安装的工具
  • tool restore:还原工具
  • tool run:运行工具
  • tool uninstall:卸载工具
  • tool search:在 nuget.org 中搜索工具

命令用法示例

单dotnet命令通用选项

  • 获取dotnet sdk版本
dotnet --version
  • 获取dotnet相关的信息,包括:运行时环境、工作负载、主机信息、sdk信息、runtime信息等。
dotnet --info
  • 列出安装的运行时信息
dotnet --list-runtimes
  • 列出安装的sdk信息
dotnet --list-sdks
  • 打印帮助信息
dotnet -h|--help

运行命令的通用选项

  • 启用诊断输出
-d|--diagnostics

例如:dotnet build -d
  • 设置命令调试信息的输出级别
-v|--verbosity <LEVEL>

级别有:[uiet], m[inimal], n[ormal], d[etailed], diag[nostic]

例如:dotnet build -v d
  • 打印指定命令的帮助信息
-?|-h|--help

例如:dotnet build -h

nuget包管理命令

添加nuget包后会在csproj配置文件中写入以下示例配置:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
  • 添加nuget包到项目中
dotnet add package Microsoft.EntityFrameworkCore
  • 列出项目添加的包
dotnet list abc.csproj package
  • 移除项目指定的包
dotnet remove package Microsoft.EntityFrameworkCore

项目到项目之间引用的命令

添加本地项目引用会在csproj配置文件中写入以下示例配置:

<ItemGroup>
  <ProjectReference Include="app.csproj" />
  <ProjectReference Include="..\lib2\lib2.csproj" />
  <ProjectReference Include="..\lib1\lib1.csproj" />
</ItemGroup>
  • 指定项目添加项目引用
dotnet add app/app.csproj reference lib/lib.csproj
  • 默认当前的项目添加项目引用
dotnet add reference lib1/lib1.csproj lib2/lib2.csproj
  • 使用 **/* 匹配添加指定目录下的所有项目

** 表示递归匹配当前目录下的所有目录及其子目录

  • 表示当前匹配目录下的所有文件
dotnet add app/app.csproj reference **/*.csproj
  • 直接引用 dll 文件的方式

直接在csproj文件中编写如下示例配置

<ItemGroup>
  <Reference Include="MyAssembly">
    <HintPath>.\MyDLLFolder\MyAssembly.dll</HintPath>
  </Reference>
</ItemGroup>
  • 列出指定项目添加的引用
dotnet list app/app.csproj reference
  • 列出当前项目添加的引用
dotnet list reference
  • 移除指定项目添加的引用
dotnet remove app/app.csproj reference lib/lib.csproj
  • 移除指定项目添加的多个引用
dotnet remove app/app.csproj reference lib1/lib1.csproj lib2/lib2.csproj
  • 使用 **/* 移除多个引用
dotnet remove app/app.csproj reference **/*.csproj

构建项目

dotnet build 子命令构建项目和依赖到一组二进制文件,二进制文件包含带有 .dll 扩展名的中间语言 (IL) 文件中的项目代码,构建后的文件有:

  1. 如果当前项目是可运行的,则会输出一个可执行的文件
  2. 如果使用的Debug模式构建的,则会输出一个 .pdb 后缀的文件
  3. 输出一个 .deps.json 文件,作用是列出项目的依赖项
  4. 输出一个 .runtimeconfig.json 文件,作用是指定项目的运行时和版本。
  • 指定项目或solution进行构建
dotnet build [project|solution]
  • 默认构建当前目录的项目或solution
dotnet build
  • 指定构建后的目标架构
dotnet build -a|--arch<ARCHITECTURE>

示例:
在win-x86机器上构建,使用此选项,则默认给出了win-x86运行时。
dotnet build -a x86

可用的RID(运行时标识符)值有:

Windows:
win-x64、win-x86、win-arm64

Linux:
linux-x64、linux-musl-x64、linux-musl-arm64、linux-arm、linux-arm64、linux-bionic-arm64

macOS:
osx-x64
osx-arm64

IOS:
ios-arm64

Android:
android-arm64
  • 指定构建的配置模式

默认为 Debug,可选 Release,构建为 Debug 则输出的二进制尺寸更大,有完整的debug信息,有利于调试。

dotnet build -c|--configuration <CONFIGURATION>

示例:
dotnet build -c Release
  • 指定构建后的目标框架

框架代号必须预先在项目配置文件(.csproj)中存在

dotnet build -f|--framework <FRAMEWORK>

示例:
dotnet build -f net7.0,net6
  • 忽略本地项目之间的引用,仅构建当前指定的项目
dotnet build --no-dependencies
  • 在构建过程中不执行隐式的 restore
dotnet build --no-restore
  • 不显示启动banner和版权信息
dotnet build --nologo
  • 构建一个依赖框架的应用,如果要部署到服务器,则必须预先安装运行时
dotnet build --no-self-contained
  • 指定构建输出的目录

如果不指定,则默认输出位置为:./bin/<configuration>/<framework>/,如 .bin/Debug/net7.0

dotnet build -o OutPutDir
  • 指定构建的目标系统

如果当前在win-x64机器上,指定了 --os linux,则会自动推断 RID 为:linux-x64

dotnet build --os <OS>
  • 指定 MSBuild 构建属性
dotnet build --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>

或

dotnet build --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>

多个属性可以用分号隔开,也可以指定 --property 多次
  • 指定构建目标的运行时

如果没有指定,则默认使用当前机器的系统和架构进行构建

dotnet build -r|--runtime <RUNTIME_IDENTIFIER>

示例:
dotnet build -r linux-x64
  • 构建一个 .NET 运行时自包含的应用

例如部署到服务器上,服务器不需要安装运行时也能直接运行应用

注意:如果使用了 -r 选项指定了 RID(RUNTIME_IDENTIFIER) ,则此选项默认为true。

dotnet build --self-contained [true|false]

清理构建输出

仅清理构建期间创建的输出,中间文件目录:obj 和 最终输出目录 bin

  • 指定项目或solution
dotnet clean <PROJECT|SOLUTION>
  • 清理指定配置构建的输出目录
dotnet clean -c|--configuration <CONFIGURATION>

示例:
dotnet clean -c Release
  • 清理指定框架构建的输出目录
dotnet clean -f|--framework <FRAMEWORK>

示例:
dotnet clean -f net7.0
  • 清理指定输出目录构建的输出
dotnet clean -o|--output <OUTPUT_DIRECTORY>

示例:
dotnet clean -o abc
  • 清理指定运行时构建的输出目录
dotnet clean -r|--runtime <RUNTIME_IDENTIFIER>

示例:
dotnet clean -r win-x64

开发证书命令

  • 使用 https 子命令查看已创建的证书或者创建新证书

首先会查找当前机器上是否已生成后有效的开发证书,没有的话会创建一个开发证书

dotnet dev-certs https
  • 显式检测证书的有效性
dotnet dev-certs https -c|--check
  • 显式检测证书的有效性,并信任此证书
dotnet dev-certs https -c --trust
  • 清理生成的开发证书
dotnet dev-certs https --clean
  • 使用 -ep|--export-path <PATH> 导出证书文件
  • 导出证书的公共部分为一个 PFX 文件
dotnet dev-certs https -ep ./certificate.pfx
  • 导出证书的公共部分为一个 PEM 格式的文件
dotnet dev-certs https -ep ./certificate.pfx --format PEM
  • 导入一个证书文件
dotnet dev-certs https --import ./certificate.pfx

代码格式化命令

  • 指定solution进行格式化
dotnet format ./solution.sln
  • 指定项目进行格式化
dotnet format ./application.csproj
  • 验证所有代码文件是否正确格式化
dotnet format --verify-no-changes
  • 显式包含指定目录进行格式化
dotnet format --include ./src/ ./tests/
  • 显式排除指定目录进行格式化
dotnet format --exclude ./src/a/

NuGet相关的操作命令

  • 添加一个包源,并设置源的名称
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
  • 添加当前机器的目录为包源
dotnet nuget add source ./NuGetDir
  • 添加一个需要授权的包源,例如需要输入用户名,密码

-n 指定包源的名称
-u 指定需要授权的用户名
-p 指定需要授权的密码

dotnet nuget add source https://abc/devTeam -n devTeam -u root -p root
  • 获取当前目录 NuGet 所有配置项
dotnet nuget config get all
  • 获取 NuGet 指定配置项的值
dotnet nuget config get repositoryPath
  • 设置 NuGet 指定配置项的值
dotnet nuget config set repositoryPath ./abc
  • 设置指定配置文件中的配置项的值
dotnet nuget config set repositoryPath ./abc --configfile ./nuget.config
  • 移除指定配置项的值
dotnet nuget config unset repositoryPath
  • 移除指定配置文件中的配置项的值
dotnet nuget config unset repositoryPath --configfile ./nuget.config

打包代码为NuGet包

  • 默认在当前项目为NuGet包
dotnet pack
  • 指定项目打包为NuGet包
dotnet pack ./project1.csproj
  • 指定打包后的输出目录
dotnet pack -o|--output

示例:
dotnet pack --output nupkgs
  • 打包时跳过构建步骤
dotnet pack --no-build
  • 打包文件带上在 .csproj 文件指定的版本后缀

<VersionSuffix>$(VersionSuffix)</VersionSuffix>

dotnet pack --version-suffix "ci-1234"
  • 指定包版本进行打包
dotnet pack -p:PackageVersion=2.1.0
  • 指定目标框架进行打包
dotnet pack -p:TargetFrameworks=net7.0
  • 指定目标运行时进行打包
dotnet pack --runtime linux-x64
  • NuGet.org 上搜索指定的包
dotnet package search Newtonsoft.Json --source https://api.nuget.org/v3/index.json

项目发布命令

发布应用和它的依赖到指定文件夹准备部署服务器,输出的目录包括以下文件:

  1. 中间码(IL)dll文件
  2. .deps.json 文件包含项目的依赖配置
  3. .runtimeconfig.json 项目运行时配置
  4. 项目的外部依赖,包含远程依赖和本地项目依赖。

基本选项与 build 命令大部分相同,不在赘述

  • 发布成依赖框架的跨平台的二进制可执行文件
dotnet publish
  • 发布成指定运行时的且自包含运行时的可执行文件
dotnet publish --runtime linux-x64
  • 发布成指定运行时的且不包含运行时的可执行文件
dotnet publish --runtime linux-x64 --self-contained false
  • 发布当前的应用不带本地引用的项目
dotnet publish --no-dependencies

依赖还原命令

.NET CLI 使用 NuGet 来查找项目需要的依赖,如果本地缓存中没找到,则下载它们放到本地缓存中,还原过程中会检测相关依赖的兼容性。

一些命令会在运行前隐式执行 restore,例如:

  1. dotnet new
  2. dotnet build
  3. dotnet run
  4. dotnet test
  5. dotnet publish
  6. dotnet pack

所以此命令的场景一般用于在自动化部署的流程中控制执行流程中使用,先在其他命令中使用 --no-restore 选项禁止隐式执行 restore

如果项目中有 nuget.config 文件,则优先取此文件中的配置

  • 还原当前项目的依赖和工具
dotnet restore
  • 指定项目进行还原
dotnet restore ./app1.csproj
  • 指定依赖源进行还原
dotnet restore -s ../MyPackages

使用run在本地开发环境运行应用

dotnet run 无需任何显式编译或启动命令即可运行源代码。

即不用预先编译成dll文件即可直接运行源码,适用于本地开发环境快速开发迭代

run 命令会使用依赖的缓存,所以不建议在生产环境使用此命令运行应用

如果运行编译后的dll文件,必须直接运行dotnet 某某dll文件

dotnet myapp.dll
  • 分割 run 命令的参数和应用使用的参数
dotnet run -- --property name=value
  • 指定目标系统架构
dotnet run -a|--arch <ARCHITECTURE>

示例:
dotnet run -a x64
  • 指定配置模式
dotnet run -c Release
  • 指定目标框架
dotnet run -f net7.0
  • 在运行之前不构建项目
dotnet run --no-build
  • 指定目标系统
dotnet run --os <OS>

示例:
dotnet run --os linux
  • 指定运行的项目
dotnet run --project <PATH>

示例:
dotnet run --project ./project1.csproj
  • 指定构建属性
dotnet run --property:<NAME>=<VALUE>

示例:
dotnet run --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
或
dotnet run --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
  • 指定目标运行时
dotnet run -r|--runtime <RUNTIME_IDENTIFIER>

示例:
dotnet run -r linux-x64

管理项目solution的命令

  • 在当前目录创建与目录同名的solution文件
dotnet new sln
  • 在当前目录创建指定名称的solution文件
dotnet new sln --name MySolution
  • 在指定目录下创建于目录同名的solution文件
dotnet new sln --output MySolution
  • 列出solution中的项目
dotnet sln <SOLUTION_FILE> list

示例:
dotnet sln todo.sln list
  • 添加项目到solution
dotnet sln add <PROJECT_NAME>

示例:
dotnet sln add ./todo.csproj
  • 从solution中移除指定的项目
dotnet sln remove <PROJECT_NAME>

示例:
dotnet sln remove ./todo.csproj
  • 把项目与solution放置在同一个目录
dotnet sln <SOLUTION_NAME> add <PROJECT_NAME> --in-root

示例:
dotnet sln todo.sln add ./todo.csproj --in-root
  • 添加多个项目到solution
dotnet sln <SOLUTION_NAME> add <PROJECT_NAME> ...

示例:
dotnet sln todo.sln add ./todo.csproj ./todo2.csproj
  • 从solution中移除多个项目
dotnet sln <SOLUTION_NAME> remove <PROJECT_NAME> ...

示例:
dotnet sln todo.sln remove ./todo.csproj ./todo2.csproj
  • 使用通配符模式添加项目到solution
dotnet sln <SOLUTION_NAME> add **/*.csproj

示例:
dotnet sln todo.sln add **/*.csproj
  • 使用通配符模式从solution中移除多个项目
dotnet sln <SOLUTION_NAME> remove **/*.csproj

示例:
dotnet sln todo.sln remove **/*.csproj
  • 添加项目到solution时指定solution文件夹的路径
dotnet sln <SOLUTION_NAME> add <PROJECT_NAME> -s|--solution-folder <PATH>

示例:
dotnet sln todo.sln add ./todo.csproj -s MyProjects

dotnet tool命令

  • 全局安装工具在默认位置
dotnet tool install -g|--global <TOOL_NAME>

示例:
dotnet tool install -g|--global dotnetsay
  • 局部安装工具在当前目录
dotnet tool install <TOOL_NAME>

示例:
dotnet tool install dotnetsay
  • 全局安装工具且指定安装的目录
dotnet tool install <TOOL_NAME> --tool-path <PATH_NAME>

示例:
dotnet tool install dotnetsay --tool-path ./bin
  • 列出全局安装的工具
dotnet tool list -g|--global
  • 列出指定位置的全局安装的工具
dotnet tool list --tool-path ./bin
  • 列出在当前目录安装的局部工具
dotnet tool list
  • 指定工具的包id列出全局安装的工具
dotnet tool list -g dotnetsay
  • 指定工具的包id列出当前目录安装的局部工具
dotnet tool list dotnetsay
  • 运行当前目录的局部工具
dotnet tool run <COMMAND_NAME>

示例:
dotnet tool run dotnetsay
  • 指定包名搜索在NuGet上的工具
dotnet tool search <TOOL_NAME>

示例:
dotnet tool search format
  • 卸载全局安装的工具
dotnet tool uninstall -g <TOOL_NAME>

示例:
dotnet tool uninstall -g dotnetsay
  • 卸载指定路径的全局安装的工具
dotnet tool uninstall <TOOL_NAME> --tool-path <PATH_NAME>

示例:
dotnet tool uninstall dotnetsay --tool-path ./bin
  • 卸载在当前目录局部安装的工具
dotnet tool uninstall <TOOL_NAME>

示例:
dotnet tool uninstall dotnetsay
  • 更新全局安装的工具
dotnet tool update -g <TOOL_NAME>

示例:
dotnet tool update -g dotnetsay
  • 更新指定路径的全局安装的工具
dotnet tool update <TOOL_NAME> --tool-path <PATH_NAME>

示例:
dotnet tool update dotnetsay --tool-path ./bin
  • 更新当前目录局部安装的工具
dotnet tool update <TOOL_NAME>

示例:
dotnet tool update dotnetsay

监听文件变更的命令

重启或热重载应用

默认情况下监听器会监听以下文件:

  1. **/*.cs
  2. *.csproj
  3. **/*.resx
  4. wwwroot/**
  • 列出所有监听器发现的文件
dotnet watch --list
  • 非交互式模式启动监听器

当文件被粗鲁的编辑后,监听器会自动重启应用

dotnet watch --non-interactive
  • 指定监听的项目
dotnet watch --project <PATH>


示例:dotnet watch --project ./abc
  • 监听时显示详细的输出信息
dotnet watch -v|--verbose
  • 通过监听器来运行其他命令
dotnet watch <OTHER_COMMAND>

示例:
dotnet watch test
  • 配置监听器包含指定的文件
<ItemGroup>
  <Watch Include="**\*.js" />
</ItemGroup>
  • 配置监听器排除指定的文件
<ItemGroup>
  <Watch Exclude="node_modules\**\*;**\*.js.map;obj\**\*;bin\**\*" />
</ItemGroup>
  • 使用 Watch=false 配置监听器忽略在 CompileEmbeddedResource 组中的文件
<ItemGroup>
  <Compile Update="Generated.cs" Watch="false" />
  <EmbeddedResource Update="Strings.resx" Watch="false" />
</ItemGroup>
  • 使用 Watch=false 配置监听器忽略引用的项目
<ItemGroup>
  <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" Watch="false" />
</ItemGroup>

相关推荐

自学Python,写一个挨打的游戏代码来初识While循环

自学Python的第11天。旋转~跳跃~,我~闭着眼!学完循环,沐浴着while的光芒,闲来无事和同事一起扯皮,我说:“编程语言好神奇,一个小小的循环,竟然在生活中也可以找到原理和例子”,同事也...

常用的 Python 工具与资源,你知道几个?

最近几年你会发现,越来越多的人开始学习Python,工欲善其事必先利其器,今天纬软小编就跟大家分享一些常用的Python工具与资源,记得收藏哦!不然下次就找不到我了。1、PycharmPychar...

一张思维导图概括Python的基本语法, 一周的学习成果都在里面了

一周总结不知不觉已经自学Python一周的时间了,这一周,从认识Python到安装Python,再到基本语法和基本数据类型,对于小白的我来说无比艰辛的,充满坎坷。最主要的是每天学习时间有限。只...

三日速成python?打工人,小心钱包,别当韭菜

随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来。而Python,作为一种相对比较容易上手的语言,也越来越受欢迎。网络上各类网课层出不穷,各式广告令人眼花缭乱。某些...

Python自动化软件测试怎么学?路线和方法都在这里了

Python自动化测试是指使用Python编程语言和相关工具,对软件系统进行自动化测试的过程。学习Python自动化测试需要掌握以下技术:Python编程语言:学习Python自动化测试需要先掌握Py...

Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能

这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...

【黑客必会】python学习计划

阅读Python文档从Python官方网站上下载并阅读Python最新版本的文档(中文版),这是学习Python的最好方式。对于每个新概念和想法,请尝试运行一些代码片段,并检查生成的输出。这将帮助您更...

公布了!2025CDA考试安排

CDA数据分析师报考流程数据分析师是指在不同行业中专门从事行业数据搜集、整理、分析依据数据作出行业研究评估的专业人员CDA证书分为1-3级,中英文双证就业面广,含金量高!!?报考条件:满18...

一文搞懂全排列、组合、子集问题(经典回溯递归)

原创公众号:【bigsai】头条号:程序员bigsai前言Hello,大家好,我是bigsai,longtimenosee!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合...

「西法带你学算法」一次搞定前缀和

我花了几天时间,从力扣中精选了五道相同思想的题目,来帮助大家解套,如果觉得文章对你有用,记得点赞分享,让我看到你的认可,有动力继续做下去。467.环绕字符串中唯一的子字符串[1](中等)795.区...

平均数的5种方法,你用过几种方法?

平均数,看似很简单的东西,其实里面包含着很多学问。今天,分享5种经常会用到的平均数方法。1.算术平均法用到最多的莫过于算术平均法,考试平均分、平均工资等等,都是用到这个。=AVERAGE(B2:B11...

【干货收藏】如何最简单、通俗地理解决策树分类算法?

决策树(Decisiontree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法。决策树算法是机器学习中的一种经典算法,它通过一系列的规则...

面试必备:回溯算法详解

我们刷leetcode的时候,经常会遇到回溯算法类型题目。回溯算法是五大基本算法之一,一般大厂也喜欢问。今天跟大家一起来学习回溯算法的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是回溯...

「机器学习」决策树——ID3、C4.5、CART(非常详细)

决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括ID3、C4.5、CART),第二篇介绍Ran...

大话AI算法: 决策树

所谓的决策树算法,通俗的说就是建立一个树形的结构,通过这个结构去一层一层的筛选判断问题是否好坏的算法。比如判断一个西瓜是否好瓜,有20条西瓜的样本提供给你,让你根据这20条(通过机器学习)建立起...