第二章 - 项目和解决方案
基本概念介绍
项目
项目(Project)指的是编译库文件或可执行文件时所需的文件,包括所有源代码、数据等,同时也包括编译器设置,以及程序运行时所需服务或组件的配置文件。点击菜单 文件 > 新建 > 新建项目 将打开 新建项目 窗口,您可以选择以下项目类型:
- 设计器开发
- 后端 API
- 浏览器端 Web 和 API
- 移动端 Web 和 API
- 传统编码
- ASP.NET Core Web API
- 控制台应用
- 类库
- Vue 项目
- xUnit 测试项目
- Worker Service
- ASP.NET Core gRPC 服务
项目文件
项目文件(Project File)是一个 XML 文件,其中包含编译项目所需的所有信息。C# 类型的项目文件扩展名为 .csproj ;JavaScript/TypeScript 类型的项目文件扩展名为 .esproj。
解决方案
解决方案(Solution)是项目的容器,通常包含一个或多个相关的项目。它包含编译信息、SnapDevelop 窗口设置以及项目通用的其他文件。解决方案的文件扩展名为 .sln,解决方案中集成了项目、项目项和解决方案项。
解决方案资源管理器
创建新项目后,您可以使用 解决方案资源管理器 查看和管理项目、解决方案、及各种项。
当您右键点击 解决方案资源管理器 中的项时,可以看到各种菜单命令,例如编译/重建项目、管理/恢复 NuGet 包、添加引用、重命名文件、添加容器支持、版本控制等。不同的项提供了不同的右键菜单命令。
解决方案资源管理器 顶部的工具栏有以下选项:
- 刷新状态:刷新源码管理状态。
- 与活动文档同步: 它允许您在 解决方案资源管理器 内的代码编辑器中定位当前文件。
- 全部折叠: 折叠 解决方案资源管理器 中的所有节点。
- 显示所有文件: 显示所选项目中的所有隐藏文件。
- 属性:打开所选项目或文件的属性页。
- 预览选定项:用于在代码编辑器中预览选定的文件或组件。
创建项目和解决方案
创建新项目
如需创建一个新项目,请执行以下步骤:
从 文件 菜单中选择 新建 > 新建项目...。
或者在 主页 选择 新建。
新建项目 页面将会弹出。
在 新建项目 页面上,选择一个项目类型。
为项目设置 名称,选择要创建项目的 位置;如果选择 创建新解决方案,则需要输入 解决方案名称;或者选择一个已存在的解决方案。
点击 创建 或 下一步 > 创建 以创建项目。
设置启动项目
您可以在 解决方案资源管理器 工具窗口中查看您的解决方案和项目,您将在其中看到一个项目名字以粗体显示,这个项目被称为 启动项目,是指运行应用程序时默认启动的项目。
如需更改启动项目,可右键点击另一个项目名,然后选择 设为启动项目。
请注意类库项目不能直接启动。对于类库项目,请在解决方案中添加一个可执行项目,并将该可执行项目设置为启动项目。
将文件添加到解决方案
如前所述,项目包含了构建应用程序所需的所有项。当您创建一个新项目时,可以选择创建一个解决方案来作该项目的容器。创建解决方案后,您还可以将现有的或新建的项目和项添加到解决方案中。新添加的项不一定属于某个项目。
有时,解决方案中的多个项目会共享同一个文件,例如解决方案的 Readme 文件,或者某些属于解决方案级别而非项目级别的文件。在这种情况下,您可以将文件添加到解决方案本身。为此,请右键点击解决方案,然后选择 添加 > 新建项,或 添加 > 现有项。
删除解决方案、项目或项
您可以使用 SnapDevelop IDE 或 文件资源管理器 删除解决方案、项目或项。不同之处在于,在 SnapDevelop IDE 中删除项目只会将它们从当前项目或解决方案中删除,而在 文件资源管理器 中删除项目则会永久删除它们。在 文件资源管理器 中删除项目之前,建议您备份这些项目,以备以后需要时还能使用它们。
要移除 SnapDevelop IDE 中的项目或项,请选择该项目或项,然后从右键菜单中选择 移除 或 从项目中排除。
想要永久删除项目:
- 在 解决方案资源管理器 中右键点击要删除的解决方案、项目、或项,然后选择 在文件资源管理器中打开文件夹。
- 在 文件资源管理器中 向上导航一级。
- 选择包含解决方案的文件夹,然后删除该文件夹。
项目属性及解决方案属性
当您在 解决方案资源管理器 中右键点击项目(或解决方案)然后选择 属性,属性设置窗口便会弹出。您可以在此窗口中配置关于项目(或解决方案)的属性。根据项目类型的不同,可配置的项目属性也会有所不同。有关每个属性的详细说明,请参考 项目编译。
脚手架
SnapDevelop 为在解决方案资源管理器中加载的 .NET 项目提供以下脚手架功能:
- 从现有数据库创建实体
- 从实体生成服务和API
- 生成API
从现有数据库创建实体
步骤一:启动该功能
如何访问此功能:
右键点击项目并选择添加 > 从数据库生成实体...。
步骤二:连接到数据库
右键点击项目并选择添加 > 从数据库生成实体...。
点击新建创建一个新的数据库连接。
在弹出的新建连接窗口中填写数据库的连接信息。
下面以 SQL Server 数据库为例。更多关于连接 SQL Server 数据库的信息可参考 https://learn.microsoft.com/en-us/visualstudio/data-tools/add-new-connections?view=vs-2022.
数据提供程序字段表示用于连接的数据提供程序。你可以点击下拉箭头展开列表来选择不同的数据提供程序。请注意,此处必须提前安装所需的数据提供程序。
在新建连接窗口填写完连接信息后,点击测试连接以确保数据库连接成功。
步骤三:选择表、视图、或函数
创建数据库连接后,你可以在从数据库生成实体窗口中选择该连接,然后从数据库中选择一个或多个项(表、视图、函数和/或存储过程)(①)。如果列表较长,可以通过名称进行搜索。如果你之前已经通过同一个数据库连接生成过实体,之前选中的项仍会被保留选中,方便再次选择。
启用关联表和引用的选择选项(②)是默认勾选的,因此当你选择一个表时,被该表所引用的表(即被引用表)也会被自动选中,并且引用关系会显示在数据类型和映射类型列(⑥)中。
而引用该表的表(即引用表)不会被自动选中。当启用关联表和引用的选择选项被勾选时,引用列会显示在引用区域(③)中。如果你在引用区域手动选择了某些引用列,相应的引用表(以及这些表所引用的表)将被自动选中。
如果有需要,你可以更改实体和/或属性的默认名称(④)。
你可以查看每个字段的数据类型(⑤),以及表之间的关系(⑥)。
你也可以选择用户自定义函数并生成同名的DataContext函数,或者选择存储过程(当前仅支持SQL Server存储过程)。
点击下一步继续。
步骤四:指定生成设置
在选择完表、视图和/或函数后,你可以为实体生成和自定义代码指定相关设置。
在生成设置选项卡中,你可以选择一个已有的生成配置文件,或者点击新建创建一个新的配置文件。
通用配置
覆盖文件:将覆盖具有相同文件名的现有文件。
将自定义代码应用到生成的代码:选中此选项后,你可以在自定义代码选项卡中配置并添加自定义代码。
实体配置
将架构名称添加为实体名称的前缀:架构名会作为前缀添加到实体文件名中。例如,dbo_cur_emp.cs 中包含了架构前缀 “dbo_”,而 cur_emp.cs 则不包含前缀。
为每个架构创建存储实体文件的子文件夹:将使用架构名称创建一个文件夹,并将实体文件存储在该文件夹中。
启用实体更改检测与通知(仅支持表生成的实体):可通过以下变更跟踪策略,追踪从数据库表生成的实体的变更情况:
- 快照
- 更改后通知
- 更改前与更改后通知
- 更改前与更改后通知(带原始值)
有关这些策略的差异,请参考 https://learn.microsoft.com/en-us/ef/core/change-tracking/change-detection。
目标配置
- 你可以指定文件的生成位置,以及使用的命名空间。
- 你可以修改文件生成的相对输出路径。
- 对于Dal(数据访问层),你还可以指定所使用的ORM。
步骤五:生成实体
点击完成以生成实体文件。
实体成功生成后,你需要从界面上复制脚本,分别将数据库上下文注入到 Program.cs 中,并在 appsettings.json 文件中添加连接字符串。请根据你的数据库信息修改连接字符串。
文件成功生成后,它们将会被列在项目中。
从实体生成服务和API
实体文件成功生成后,你可以从实体生成服务和API。
步骤一:启动该功能
如何访问此功能:
- 右键点击实体 CS 文件并选择 生成服务和 API...。
步骤二:配置服务和 API
选择 API
选择一个或多个实体,然后右键点击,选择生成服务和 API...。
在生成服务和 API 窗口中,默认勾选生成所有 API (①),这表示会为所有基础服务生成 API。你也可以通过勾选生成 API (②)仅为指定服务生成 API。
配置授权
你可以为控制器(①)(API 的上层)选择授权策略,所有 API 默认将使用该策略。你也可以在 API 设置页面(②)中为每个 API 单独选择不同的策略。
对于控制器,你可以选择以下授权策略:
基础:这是最基本的权限策略,一般表示该控制器不做特殊授权限制,除非在方法级别单独设置。适用于那些无需额外权限控制或权限继承的场景。
None:不使用策略。
使用应用程序默认策略:此选项表示该控制器会使用全局配置中定义的默认授权策略。这种方式适用于项目中大多数控制器采用统一授权规则的情况,只在特殊场景下单独调整。默认策略通常在应用程序的配置文件或启动类中设置,例如默认要求用户已登录或具备某种角色。
使用匿名策略:选择此策略表示该控制器不需要任何身份验证或权限即可访问。所有用户,包括未登录用户,都可以调用此接口。常用于公开页面、登录接口、验证码、第三方回调地址等不涉及敏感信息的场景。
自定义:该策略允许开发者为当前控制器单独指定一套访问控制规则,例如限定某些角色、权限、声明等。适用于有特殊授权要求的接口。
ASP.NET Core 默认策略:即ASP.NET Core默认提供的[Authorize]行为,要求用户已通过身份验证,但不检查角色或权限。常用于仅需用户登录即可访问的接口(如个人信息页、订单列表等)。
要添加新的自定义策略,你需要先编写代码并实现该策略,然后在此处添加该策略,方法是点击策略列表框底部的新增授权策略。
在授权策略对话框中,点击添加(①)以添加一个策略,然后点击重命名图标(②)将默认名称修改为实际的策略名称(③),或将其设为默认策略(④)。
配置服务
你可以在服务设置选项卡中配置每个服务的相关设置。
参数设置
列出服务的请求参数。
排序设置
(适用于 GetList 和 GetPage)点击对数据源进行排序以设置数据库中的数据排序。你可以选择一个字段或输入一个表达式,然后指定按升序或降序排序。
赋值设置
(适用于 Add,AddRange 和 Update)你可以为字段设置数值。可以选择字段,也可以输入值或表达式。
返回设置
(适用于 Get,GetList 和 GetPage)指定服务每个响应字段的返回值。可以选择字段,或输入值或表达式。
(适用于 Add,AddRange,Update 和 Delete)列出服务的返回值。
对返回数据进行排序
(适用于 GetList 和 GetPage)点击对数据源进行排序以选择一个实体,然后点击添加排序选项来选择字段或输入表达式以对数据排序。
描述:服务的描述信息。
配置 API
你可以在 API 设置选项卡中配置每个 API 的相关设置。
名称:API 的名称。
方法类型:API 的默认请求方法类型。
路由模板:指定路由模板,例如 api/[controller]/[action]。
参数设置
你可以选择从以下位置获取参数:FromQuery,FromRoute,FromForm,FromBody 或 FromHeader。
- FromQuery:从查询字符串绑定参数。
- FromRoute:从请求路由中绑定参数。
- FromForm:从请求正文中的表单数据绑定参数。
- FromBody:从请求正文绑定参数。
- FromHeader:从请求头绑定参数。
授权设置:对于当前 API,你可以选择以下授权策略:
- 基础:这是最基本的权限策略,一般表示该API不做特殊授权限制,除非在方法级别单独设置。适用于那些无需额外权限控制或权限继承的场景。
- 使用上一层策略:该选项表示该API会继承其父级(如控制器)定义的授权策略。这种方式便于在控制器级统一设置权限策略,API自动应用,无需重复配置。
- 使用应用程序默认策略:此选项表示该API会使用全局配置中定义的默认授权策略。这种方式适用于项目中大多数API采用统一授权规则的情况,只在特殊场景下单独调整。默认策略通常在应用程序的配置文件或启动类中设置,例如默认要求用户已登录或具备某种角色。
- 使用匿名策略:选择此策略表示该API不需要任何身份验证或权限即可访问。所有用户,包括未登录用户,都可以调用此接口。常用于公开页面、登录接口、验证码、第三方回调地址等不涉及敏感信息的场景。
- 自定义:该策略允许开发者为当前API单独指定一套访问控制规则,例如限定某些角色、权限、声明等。适用于有特殊授权要求的接口。
- ASP.NET Core 默认策略:即ASP.NET Core默认提供的[Authorize]行为,要求用户已通过身份验证,但不检查角色或权限。常用于仅需用户登录即可访问的接口(如个人信息页、订单列表等)。
描述:API 的描述信息。
点击下一步继续。
步骤三:指定生成设置
生成设置
在生成设置选项卡中,指定服务和 API 的生成设置。你可以选择一个已有的生成配置文件,或点击新建创建一个新的配置文件。
通用配置
- 覆盖文件:覆盖具有相同文件名的现有文件。
- 将自定义代码应用到生成的代码:选中该选项后,你可以在自定义代码选项卡中配置并添加自定义代码。
目标配置
- 你可以指定文件生成的位置以及要使用的命名空间。
- 你可以修改文件生成的相对输出路径。
自定义代码
更多内容,请参考自定义代码。
步骤四:生成服务和 API
点击完成以生成文件。
服务和 API 成功生成后,你需要从屏幕上复制脚本,分别在 Program.cs 中注入仓储和服务。
文件生成成功后,它们将显示在项目中。
生成 API
你也可以从控制器、实现类或接口中生成 API。
访问此功能的方法如下:
- 选择一个实体的 .cs 文件,然后右键点击并选择生成 API。
管理项目引用
三种引用方式
SnapDevelop 目前支持四种引用方式,分别是:
- 项目间引用
- 共享项目引用
- COM 引用
- 文件引用
引用管理
要添加引用,请在 解决方案资源管理器 中右键点击项目中的 依赖包,然后选择 添加项目引用...。
将出现 引用管理 对话框并按组列出可引用参考。
在 引用管理 对话框中,左侧有四个下拉选项:
- 项目:列出当前解决方案中的所有兼容项目。
- 共享项目:列出当前解决方案中的所有共享项目。
- COM:列出可供引用的所有 COM 组件。
- 浏览:它允许您浏览文件系统中的组件。此选项卡可列出最近新添加到项目中的文件。
引用管理 对话框中提供了一个搜索栏,可用于过滤列出的项目。
排除相关异常
如果您的应用程序找不到引用的组件,则会引发异常。有以下几种情况会抛出异常:
- 网络故障 -- 修复网络连接问题,直到您可以访问所需的资源。
- 被引用的文件已被删除 -- 删除引用,或者如果被引用的文件在您计算机上的其他位置,则从其他位置读取它。
- 被引用的文件已被重命名 -- 删除引用,然后添加对重命名文件的引用。
如果发生任何此类异常,您需要先处理问题再尝试引用。
应用程序设置
管理应用设置
应用设置允许您保存各种与应用程序相关的信息,例如应用 URL、启动 URL 和数据库连接字符串。
当您在 SnapDevelop 中创建 Web API 应用时,项目系统会自动将应用设置存储到两个 JSON 文件(launchSettings.json 和 appsettings.json )中。
在 launchSettings.json 文件中:
- applicationURL:在本地计算机通过浏览器启动任何应用的 URL。
- launchBrowser:是否在运行应用时启动浏览器。
- launchURL:在本地计算机上启动的 URL。
- environmentVariables:ASP.NET Core 在应用启动时读取的变量以及 ASP.NET Core 用于配置应用行为的变量。
在 appsettings.json 文件中:
- LogLevel:指定所选类别的最低记录级别。
- AllowedHosts:允许访问此站点的主机。
- ConnectionStrings:指定有关数据源的信息以及连接方式。
注意:有两个配置文件可以管理 Web 应用运行时。默认应用程序配置存储在 appsettings.json 文件中。但是,您可以使用 appsettings.Development.json 文件来覆盖这些设置。
添加应用配置文件
您可以通过向项目添加应用配置文件来定义通用语言运行库加载程序集文件的方式。
当您编译项目时,SnapDevelop 会自动复制您的应用程序配置文件,更改副本的文件名以匹配您的可执行文件,然后将副本移动到 bin 目录。
想要将应用配置文件添加到您的项目:
右键点击 解决方案资源管理器 中的项目,然后选择 添加 > 新建项。
在出现的 添加新项 窗口中,展开 Web,然后选择 Web 配置文件 模板。
在 名称 文本框中输入配置文件的名称,然后点击 创建。
文件将会添加到您的项目中。
管理数据库连接
想要创建数据库连接:
点击菜单栏上的 工具 > 连接到数据库...。
在 选择连接 窗口中,点击 新建 以配置数据库连接。如果您已经创建了一个数据库连接,您可以直接使用现有的连接,从 连接 列表中选择它,或者点击 编辑 修改设置。
从 数据提供程序 列表中选择一个数据库类型。
为所选数据源配置基本设置和高级设置。
关于每个数据源配置的设置,请参阅 附录 D:数据库连接设置。
点击 测试连接 以检查连接状态。
检查 连接字符串 对话框中的连接字符串以确保按预期配置属性。您也可以复制连接字符串以在其他地方使用它。
管理程序集和清单签名
可签名的资产类型
您可以对以下 .NET 程序集和应用清单进行签名:
- 可执行文件 ( .exe)
- 应用清单(.exe.manifest)
- 部署清单 ( .application)
- 共享组件(.dll)
为程序集签名
想要在 SnapDevelop 中为程序集签名:
- 右键点击 解决方案资源管理器 中的项目。
- 从右键菜单中选择 属性。
- 选择 签名,然后选择 为程序集签名 复选框。
- 选择密钥文件。
目标框架
SnapDevelop 允许您指定项目所支持的目标框架。如果 .NET 应用程序要在另一台计算机上运行,则应用程序所支持的 .NET 版本必须与计算机上安装的 .NET 版本兼容。
SnapDevelop 支持受长期支持的 .NET 版本以及最新的 .NET 版本。
一个 SnapDevelop 解决方案可以包含支持不同 .NET 版本的多个项目。
更改目标框架
创建 .NET Core 项目时,您无法指定目标 .NET Core 版本因为 SnapDevelop 会默认支持最新的 .NET Core 版本。但是,您可以根据需要更改 .NET Core 版本。
想要更改目标框架:
- 在 解决方案资源管理器 中选择要更改的项目,然后从右键点击菜单中选择 属性。
- 在左侧 属性 窗口中,选择 应用程序。
- 在 目标框架 列表中,选择您想要选择的版本。
管理项目和项模板
项目和项模板
安装 SnapDevelop 时会自动安装各种预定义的项目模板和项模板。这些模板提供了一套基本的预生成代码和结构,开发人员可以在此基础上向项目或项中添加一些其他代码和资源,从而减少开发过程中的重复工作。
SnapDevelop 目前提供以下项目模板:
- 控制台应用 (C#)
- 类库(.NET Core 或 .NET Standard)
- ASP.NET Core Web API
- ASP.NET Core gRPC 服务
- Web 应用
- 使用 Vue 项目模板的 Web 应用程序
- Worker Service
- xUnit 测试项目(.NET Core)
- 共享项目
以及以下项模板(不同的项目类型,可添加的项有所不同):
类
接口
枚举
API 控制器 - 空
包含读/写操作的 API 控制器
程序集信息文件
DataContext
中间件类
应用设置文件
资源文件
Web 配置文件
文本文件
Markdown 文件
JSON 文件
HTML 页面
JavaScript 文件
JavaScript JSX 文件
样式表
TypeScript 文件
TypeScript JSX 文件
协议缓冲文件
Empty Drawio
XML 文件
YAML 文件
Vue 文件
VueConfig 文件
HTTP 协议请求脚本
WIZARD_VUE_TITLE
当您创建新项目或项时,以上模板均可供选择。所有项目及项模板,包括默认模板和自定义模板,都共享以下内容:
- 使用模板时创建的文件。这些文件包括源代码文件、嵌入资源、项目文件等。
- 一个 .template 文件,其中包含从模板创建项目或项时所需的元数据,以及在 新建项目 和 新建项 对话框中显示模板所需的元数据。
当这些文件被放入正确的文件夹时:
- 项目模板会出现在 新建项目 对话框中。
- 项模板会出现在 新建项 对话框中。
管理 NuGet 程序包
SnapDevelop 中的 NuGet 包管理器允许您在项目和解决方案中安装、卸载和更新 NuGet 包。能够使用 NuGet 包管理器的项目主要为 C# 类型的项目(例如:控制台应用、类库、ASP.NET Core Web API、ASP.NET Core gRPC 服务、Worker Service、xUnit 测试项目等)。
NuGet 包管理器会记住您为单个项目或整个解决方案配置的以下设置,并在您下次打开 NuGet 包管理器时恢复您的设置:
包源
包括预发行版本
显示预览窗口
选项
要访问 NuGet 包管理器的常规设置,请在 SnapDevelop IDE 中选择菜单 工具 > 选项 以打开 选项 窗口,然后选择 NuGet 包管理。或者在打开 NuGet 包管理器以后点击管理器的右上角的设置图标。
关于每个选项的具体说明,请参考 NuGet 包管理。
包管理器选项卡
NuGet 包管理器包含以下选项卡,每个选项卡由左侧的包列表和右侧的包详细信息组成。
浏览:显示可以安装的 NuGet 包。如果已经安装了 NuGet 包,则右侧的 安装 按钮将会变为 卸载。您可以搜索软件包,根据您的搜索词显示匹配列表。
已安装:显示当前项目中已安装和加载的包。包图标中显示的绿色向下箭头表示该包是当前最新版本。
更新:显示具有来自当前选定包源的可用更新包。包图标中显示的蓝色向上箭头表示该包有可用的更新版本。
合并:显示不同项目是否安装了同一个包的不同版本。您可以将不同项目中的不同版本的包统一为一个版本。
管理项目的依赖包
查找和安装包
在 解决方案资源管理器 中右键点击项目或 依赖包,然后从弹出菜单中选择 管理 NuGet 程序包...。
选择 浏览 选项卡以查看当前可用包源中的包。使用包管理器左上角的搜索框可以快速搜索到所需的包。
注意:如需在搜索中包括预发行版本,并使预发行版本在 版本下拉列表中可用,请选择 包括预发行版 选项。
从左边的包列表中选中所需安装的包,在右边可以查看其详细信息,可以从 版本 下拉列表中选择所需的版本,然后点击 安装。
SnapDevelop 将包及其依赖项安装到项目中。您可能会被要求接受许可条款。您可以在 IDE 底部的 输出 窗口中查看安装进度和结果。
安装完成后,已安装的包出现在 已安装 选项卡下和 解决方案资源管理器 的 依赖项 > 包 节点下面,表明您可以使用
using
指令在项目中引用它们。
卸载包
在 解决方案资源管理器 中,右键点击项目或依赖包,然后从弹出菜单中选择 管理 NuGet 程序包...。
选择 已安装 选项卡以显示所有已安装的软件包。
在左边列表中选中要卸载的包,然后在右边点击 卸载。
更新包
在 解决方案资源管理器 中,右键点击项目或依赖包,然后从弹出菜单中选择 管理 NuGet 程序包...。
选择 更新 选项卡查看已安装包是否有可用的更新的包。可以选择包括预发行版本以在更新列表中包含预发布包。
在左边列表中选中要更新的包,然后在右边的 版本 下拉列表中选择更新的版本,然后点击 更新。
管理解决方案的依赖包
如果要同时管理多个项目的 NuGet 包,建议您使用解决方案级别的包管理器。与单个项目的包管理器相比,解决方案的包管理器除了三个选项卡外,还有一个 合并 选项卡。
想要管理解决方案的包:
右键点击解决方案,从弹出菜单中选择 管理解决方案的 NuGet 程序包...。
选择想要管理的一个或多个项目。
合并包版本
在同一解决方案中的不同项目使用同一 NuGet 包的不同版本并不常见。当您使用解决方案的 NuGet 包管理器时,您将看到一个 合并 选项卡,它允许您轻松查看解决方案中不同项目是否使用了不同版本号的包。
想要合并软件包版本:
- 在项目列表中选择要更新的项目。
- 从 版本 下拉列表中选择要在所有项目中统一使用的包版本。
- 选择 安装。
包管理器将选定的包版本安装到所有选定的项目中。版本统一后,该包将从合并选项卡的列表中消失。
指定包源
要更改 SnapDevelop 获取包的来源,请从 程序包源 下拉列表中选择所需的包源:
关于如何管理包源,请参阅 包源。
包管理器选项
当您选择一个包时,您将在版本选择下方看到一个可展开的 选项,里面包括显示预览窗口和卸载选项等。对于某些项目类型(例如 .NET Core 项目),仅提供 显示预览窗口 选项。
显示预览窗口
如果启用 显示预览窗口 选项,则在安装包之前,窗口会显示所选包的依赖。
卸载选项
删除依赖项 -- 删除没有在项目任何地方引用的依赖包。
在存在依赖项时仍强制卸载 -- 卸载包,即使它仍在项目中被引用。此选项通常与 删除依赖项 一起使用以删除包。但是,选择此选项可能会导致项目中的引用损坏。
管理 Node 程序包
SnapDevelop 中的 Node 包管理器(NPM)允许您在项目和解决方案中安装、卸载和更新 Node 包。能够使用NPM的项目主要为 JavaScript/TypeScript 类型的项目(例如:Web 应用、Vue 项目等)。
选项
要访问 Node 包管理器的常规设置,请在 SnapDevelop IDE 中选择菜单 工具 > 选项 以打开 选项 窗口,然后选择 Node 包管理。关于每个选项的具体说明,请参考 Node 包管理。
包源
Node 包管理器默认从以下三个位置获取包:
NPM -- 最大最受欢迎的 JavaScript 包存储库。
CNPM -- 面向中国客户的 NPM 镜像。
Yarn -- Yarn 是 Node.js 项目的替代包管理器。它提供与 NPM 相同的主要功能,但还有一些其他附加功能,例如并行下载。使用这个包源需要安装 Yarn(可以通过
npm install -g yarn
安装)。
您可以通过 Node 包管理器右上角的 程序包源 下拉列表切换包源。
包管理器选项卡
Node 包管理器和 NuGet 包管理器类似,主要由三个选项卡组成:
浏览 选项卡允许您搜索软件包,根据您的搜索词显示匹配列表。
已安装 选项卡显示当前项目中安装的包。如果软件包是最新的,该图标会显示一个绿色的向下箭头,如果有可用的更新,该图标会显示一个蓝色的向上箭头。
更新 选项卡仅显示那些有可用更新的包。
输出
Node 包管理器命令的执行结果将显示在 输出 面板中。您需要从 显示输出来源 列表中选择 NPM 才能显示结果。
当您执行命令时,输出 面板将显示已执行的命令、安装了哪些软件包以及与该安装相关的其他附加信息。
使用 Node 包管理器
SnapDevelop 提供了一个用于 Node 包管理器 (NPM) 的图形用户界面 (GUI) 前端。本节将介绍主要操作(安装、更新、删除)。
在执行以下步骤之前,请先在解决方案资源管理器中打开一个 Vue 项目。
打开 Node 包管理器
要打开 Node 包管理器,请在解决方案资源管理器中右键单击项目的 依赖包 条目,然后从弹出菜单中选择 安装新的 Node 包 选项。
安装 Node 包
要使用 Node 包管理器安装包,
打开 Node 包管理器(如上所述)。
在 Node 包管理器中选择 浏览 选项卡。
使用搜索框搜索要安装的软件包。
在详细信息面板上,单击 安装包 按钮。
在 输出 面板中查看安装过程和结果。
展开项目节点下的 依赖包 条目并确保包已正确安装。
更新 Node 包
要更新 Node 包,
打开 Node 包管理器。
选择 更新 选项卡。
选择要更新的包。
在详细信息面板中,选择要更新到的版本。您可以选择 (最新) 以自动安装最新版本。
单击 安装包 按钮。
删除 Node 包
要删除 Node 包,
打开 Node 包管理器。
选择 已安装 选项卡。
在包列表中,选择要删除的包。
在包详细信息面板中,单击 卸载包 按钮。
或者把鼠标悬停在要删除的包上面,这时右上角将出现一个删除图标。点击此图标即可删除当前的软件包。
或者在 解决方案资源管理器 中,展开项目下的 依赖包 节点,右键点击要删除的包,然后选择 卸载 Node 包。
选项面板
您可以为要安装的每个软件包配置以下设置:
依赖类型 -- 当前包的依赖类型:
标准 -- 项目正常运行所需的包,将在项目发布时包含在内。
开发 -- 仅在开发过程中需要并且在发布时不包含在内的包。
可选 -- 项目功能不需要的可选包。未能安装此类依赖项不会停止安装过程。
添加到 packages.json -- 将安装的依赖包信息同步到项目里的 package.json 文件。
所选版本 -- 要安装的包的版本。
其他 NPM 参数 -- 要传递给 CLI 的任何其他参数。
使用终端 CLI
下面演示了使用 Node 的集成 CLI 来安装和维护包的一些替代方法。以下命令需要 NPM 存在并且可以通过系统的 PATH 环境变量访问。默认情况下,应该已经通过节点安装。
搜索包
要在默认 Node 包源中搜索包,请使用 search
命令。
例如:
npm search moment
输出:
NAME | DESCRIPTION | AUTHOR | DATE | VERSION | KEYWORDS
moment | Parse, validate,… | =ichernev… | 2020-10-06 | 2.29.1 | moment date time parse form
dayjs | 2KB immutable date… | =iamkun | 2021-09-10 | 1.10.7 | dayjs date time immutable m
moment-timezone | Parse and display… | =ichernev… | 2021-11-10 | 0.5.34 | moment date time timezone o
react-moment-proptypes | React proptype for… | =calebmorris… | 2021-03-24 | 1.8.1 | moment react props proptype
react-moment | React component for… | =web-headzoo | 2020-12-19 | 1.1.1 | date moment react react-com
fecha | Date formatting and… | =taylorhakes | 2021-04-05 | 4.2.1 | date parse moment format fe
moment-jalaali | Jalaali (Jalali,… | =behrang… | 2021-11-29 | 0.9.4 | jalaali jalali persian khor
vue-moment | Handy Moment.js… | =brockpetrie… | 2019-12-22 | 4.1.0 | vue custom date time filter
react-day-picker | Flexible date… | =gpbl | 2021-03-19 | 7.4.10 | react react-component compo
moment-duration-format | A moment.js plugin… | =jsmreese | 2019-06-05 | 2.3.2 | moment duration format
relative-time-parser | A moment.js plugin… | =cmaurer | 2021-10-23 | 1.0.15 | moment moment.js date graph
moment-business-days | MomentJS plugin to… | =ianaya89… | 2020-04-16 | 1.2.0 | moment momentjs business da
ember-moment | Moment.js template… | =knownasilya… | 2022-01-21 | 10.0.0 | ember-addon moment momentjs
moment-business | Methods to work… | =jmeas | 2016-09-16 | 3.0.1 | moment momentjs moment.js b
@momentum-ui/core | Cisco Momentum UI… | =pauljeter… | 2021-12-17 | 19.15.16 | Momentum Design Cisco Webex
moment-jdateformatparser | Translates the… | =herom =madmg | 2018-06-26 | 1.2.1 | moment java date format jav
moment-immutable | Make moment.js… | =smartin85 | 2021-02-14 | 1.0.9 | momentjs date immutable rea
@ladjs/moment | Parse, validate,… | =shadowgate15… | 2019-06-19 | 2.24.0 | moment date time parse form
jalali-moment | Manipulate and… | =fingerpich | 2022-01-31 | 3.3.11 | manipulate validate jalali
moment-business-time | Query and… | =lennym | 2022-01-13 | 2.0.0 | moment working time working
要查看某个包的详细信息,请使用 view
命令。
例如:
npm view moment
输出:
moment@2.29.1 | MIT | deps: none | versions: 71
Parse, validate, manipulate, and display dates
https://momentjs.com
keywords: moment, date, time, parse, format, validate, i18n, l10n, ender
dist
.tarball: https://registry.npmjs.org/moment/-/moment-2.29.1.tgz
.shasum: b2be769fa31940be9eeea6469c075e35006fa3d3
.integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
.unpackedSize: 4.2 MB
maintainers:
- ichernev <iskren.chernev@gmail.com>
- timrwood <washwithcare@gmail.com>
- mj1856 <mj1856@hotmail.com>
- maggiepint <maggiepint@gmail.com>
- marwahaha <marwahaha@berkeley.edu>
dist-tags:
latest: 2.29.1
published a year ago by marwahaha <marwahaha@berkeley.edu>
安装包
要安装包,请使用以下命令:
npm install {<选项>} <包名>
例如:
npm install --save moment
安装用于发布的Moment包
或者
npm install --save-dev
安装用于开发的Moment包
--save 和 --save-dev 开关分别将包添加到 package.json 的 dependencies 和 devDependencies 节点。
请注意,从 NPM 5.0 开始, --save 开关是可选的。
devDependencies 中的包仅用于开发,发布应用程序时不会包含它们。
以这种方式安装包将始终安装可用的最新版本(根据 package.json 文件中指定的版本号)。
安装不同版本
要安装包的其他版本,请在包名称中包含版本,如下所示:
npm install <包>@<版本>
例如:
npm install moment@2.29.0
要查看某个包的可用版本,请使用以下命令:
npm view <包> versions
关于 npm install
命令的详细文档,请参阅 此链接。
列出包
要查看项目中当前已安装的包,请使用 npm list
命令。
传入开关 --depth <n>
将显示已安装的软件包及其依赖关系,最高可达 n 级。当 n = 0 时,将只显示直接依赖项( package.json 中的 dependencies 和devDependencies 节点中列出的包)。默认值为 0。
更新包
要更新项目中的某个包或所有包,请使用 Update
命令:
npm update <包>
例如:
npm update moment
将 moment 包更新到 package.json 文件中指定的允许的最新版本。
如果没有指定包,它会尝试更新当前项目中的所有包(或者如果指定了参数 -g 的话,将在全局中更新)。
关于 npm update
命令的详细文档,请参阅此链接。
删除包
要从本地项目中删除包,请使用 npm uninstall
命令:
npm uninstall <包>
例如:
npm uninstall moment
这将删除 moment 包和它相关的(未标记为其他包的依赖项)所有包。
关于 npm uninstall
命令的详细文档,请参阅 此链接。