Intro
做Java开发引用的类库是*.jar
形式,用Maven
等工具来管理依赖。
做dotnet开发也是,管理*.dll
形式的依赖库也有工具:NuGet。
以一个测试数据库连接的 控制台应用 为例。
用到了一个SqlConnection
类,该类所在的依赖库为 System.Data.SqlClient
以下为解决流程截图。
NOTE: 并不是所有版本的 Visual Studio 都支持 NuGet,我的是 2019 。
在 Visual Studio 中配置 NuGet
NuGet 默认的源对国内的访问速度可能并不理想,可以修改一下。
工具 -> NuGet 包管理器 -> 程序包管理器设置
NuGet包管理器 -> 程序包源 -> +
https://nuget.cdn.azure.cn/v3/index.json
或自己公司给定的可访问的源地址也可。
项目缺失依赖报错
错误详情见 依赖缺失问题 CS0246 未能找到类型或命名空间名“SqlConnection”(是否缺少 using 指令或程序集引用?) CS1069 未能在命名空间“System.Data.SqlClient
这里什么错误不重要,重要的是需要一种方式下载/添加依赖到本项目
依赖管理
右击“解决方案” -> “管理解决方案的 NuGet 程序包”
从 浏览
切换到 已安装
界面,可以看到当前没有安装任何包。
切换到 浏览
搜索框内可以搜索依赖名,如:System.Data.SqlClient
搜索
System.Data.SqlClient
,有很多结果,自己判断哪个是自己需需要得:
我选第一个,下载量最多的,查看详情,然后点击安装
正在安装:
安装成功:
观察界面:
状态为 已安装 ,版本是 4.8.2
以及 解决方案管理器 中的 依赖/Reference
下多了一个新的依赖。
点击该依赖,右键Properties
可以查看属性(如 依赖所在路径 Path)。
其实到这一步,依赖已经添加到了本项目。
不过继续走一下后面的流程,加深对 NuGet 工具功能的理解。
看一下该依赖的Path:
去文件管理器中查看该路径下内容:
也就是说, NuGet 通过一个公共的仓库地址,自动下载需要的依赖到本地目录中,对版本、其他等进行管理。
类似于 Maven 通过 Server/Mirror 的配置, 自动下载远程仓库中的 jar 包到本地仓库(localRepository配置)。
点击nuget.org
,自动跳转到该依赖对应的页面:
信息查看:
打开本项目的 .csproj
配置文件,
再次对照 NuGet 解决方案
中的 已安装
页面,
以及 解决方案管理器
中的 引用/Reference
最根本的是.csproj
配置文件中的节点:
<ItemGroup>
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
</ItemGroup>
每个依赖项对应该配置中的一行PackageReference
。
界面上的展示内容都是读取自最终端的配置文件(暂时这样认为)。
All done.