问题:我引用的是将在.net docker容器中运行的LinuxCore2.1库中的IConfiguration接口
Visual Studio 2019会自动为我添加程序集引用。如果我接受,它将引用我的程序文件目录中的Microsoft.Extensions.Configuration.Abstractions.dll。
但是,我看到这个dll还有一个nuget打包器在线。
说“只信任visual studio”很容易,但我以前遇到过.net框架的问题,当它想要引用的程序集实际上是需要添加的包的一部分时,VS (或resharper)会尝试添加程序集引用。
我是一个长期使用.net的人,只是拿起了.net内核。在这种情况下,正确的约定是什么?
发布于 2019-07-08 00:19:15
.NET核心的设计将包引用作为引用依赖项的标准方式。选择这种设计有几个原因,然而,主要的一个原因是允许在多个OS和arch目标上运行代码。因此,推荐的创建依赖项的方法是使用包引用。它将允许获取与给定操作系统和CPU组合相关的软件包。
例如,您可以针对构建Windows、Linux和macOS,针对Linux和Windows x64和arm64体系结构,而针对macOS x64体系结构。项目引用包将为给定的操作系统和处理器体系结构组合选择合适的包,例如,在SQLite的情况下,它将是win-x64、win-arm64、linux-x64、linux-arm64、macOS-x64包版本。对于.NET核心包和运行时也是如此,它们将根据目标平台和目标体系结构的组合进行选择。处理所有这些组合的一般概念是由Target Framework绰号抽象出来的,除了处理操作系统和架构信息之外,它还允许处理版本依赖信息。
所有这些都是理解.NET核心中版本控制和操作系统/体系结构依赖处理的基本概念,该核心也在其项目系统中实现。在你这样的情况下,你应该总是选择nuget包而不是程序集引用,尽管Visual Studio提出了通常并不总是正确工作的建议。要验证这一点,可以检查Visual Studio使用的.NET核心项目系统所在的github上的dotent/项目系统存储库中关闭或仍然打开的问题的数量。
最后,尽管引用纯IL程序集可以工作,但它不是未来的证明,因为依赖关系中的任何更改都会使其特定于平台或体系结构(即,使用.NET核心硬件内部的体系结构特定优化),这将破坏您的项目。
https://stackoverflow.com/questions/56919698
复制相似问题