【NuGet】引用nuget包后构建项目简单解析
背景:项目中有时候需要引用第三方包实现某些功能,比如引入NPOI,方便使用表格。此时就需要添加nuget包。
- 首先 在项目创建的时候会生成一个.csproj 文件,这个文件是C#项目的构建配置文件。我理解可以当做是一个说明书,告诉MSBuild(Microsoft Build Engine, .NET 和 Visual Studio 用的“构建系统”)项目的一些信息,比如编译哪些文件,引用哪些包。
- 当项目中引用一个NuGet包(VS → 管理 NuGet 包 或者 dotnet add package xxx),那么.csproj 文件 会记录一条包引用的信息。
<ItemGroup><PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
- 当重新生成或者构建项目时,根据csproj 文件的内容,会从本地NuGet或者NuGet.org 下载对应版本的包(一个 .nupkg 压缩文件)。
- 把包解压,放到本地全局缓存目录(通常是 ~/.nuget/packages 或 %UserProfile%.nuget\packages)。
- 在生成(Build)时,编译器根据 csproj 中的引用,把对应的 DLL 引入项目。
- 因此,在bin/Debug/ 文件夹下可以看到该包的dll。此时将整个输出目录(bin/Debug/文件夹)拷贝到其他的电脑上,是可以正常运行的。如果仅仅是把exe/dll拷贝过去,程序大概率会报错。
- 但是,也有一种可能 引用的包不会显式的以dll出现在输出目录中,但实际上已经包含在项目中,这种情况不赘述(因为我也没搞懂)
上面345 可以统称为还原NuGet包。
完结撒花~