我的解决方案中有一个.NET Standard 2.0项目,我正在使用IConfiguration接口。当我写名称VS建议我引用Microsoft.Extensions.Configuration.Abstractions.dll。如果我这样做,则添加在参考节点下。但是我也可以将它添加为NuGet包。两种方式似乎都有效。我假设参考VS建议是通过项目中引用的.NET Standard SDK添加的。
添加该引用的推荐方法是什么?每种方法有哪些优点和缺点?
答案 0 :(得分:9)
直接从手动下载或安装在已知位置的NuGet包引用DLL,可以加快恢复和构建过程,但存在一些危险。
当引用DLL文件时,NuGet包可以执行许多操作。如果要从包中引用DLL,请确保该包不会执行以下/ account之一以实现以下可能性:
ref/
文件夹中提供“API surface”dll,然后在其lib/
中包含.NET Framework .NET Core,Xamarin等的不同实现程序集。夹。您必须小心选择正确的DLL文件以引用项目类型 - .NET标准库可能需要在编译期间引用引用程序集(例如ref/netstandard1.4/foo.dll
和使用此引用的.NET Framework应用程序库需要从例如lib/net452/foo.dll
。.dll
,Linux上的.so
等 - 来自runtime/
子文件夹)或任何内容文件。在没有NuGet的情况下实现这一点很棘手,因为.nuspec
文件还可以定义内容文件的构建操作。.csproj
文件,则无法手动执行此操作。如果NuGet包不使用上述任何一个(您需要手动检查),则通常可以安全地引用DLL。但是,更新DLL及其依赖项是很多工作,使用NuGet更容易。
此外,您提到您直接从.NET Core工具中的nuget fallback文件夹引用。此文件夹不保证在其他安装中包含DLL的特定版本(取决于安装的SDK版本),甚至可能安装在不同计算机上的不同位置,使您的项目文件无法用于其他工作人员(以及在非Windows机器上构建。)