使用 4.6.1 添加网络标准

adding a netstandard with 4.6.1

随着 netstandard 的出现,创建可在 netcore 和 netframework 中使用的库应该会更容易。也有可能将多个目标框架添加到一个 netstandard 库中,这样它就可以为多个目标构建。然而,其中有些东西让我觉得不对劲,也许我的看法不对。我会尽力解释这个场景。

我有这个 netstandard 库,目标是 netstandard1.5 和 net461。我通过将项目更改为并添加两个目标来做到这一点。这个项目正在构建并打包到一个 nuget 包中,通过仔细检查,它确实包含 net461 和 netstandard1.5 的二进制文件。有了这个,我假设我有一个可以添加到 netcore 项目或 netframework 项目的库,具有最小的依赖性。此外,该库依赖于 Microsoft.Extensions.Logging.Abstractions (1.1.2)、Newtonsoft.Json (10.0.2) 和 System.Security.SecureString (4.3)。

另一方面,我有一个带有 netframework 461 的经典控制台项目。自然地,我想在这里使用这个库,因为它是一个 netframework 461 项目,而且这个库也以 netframework 461 为目标,我想依赖性将保持在最低限度。当我寻找这个包时,它的依赖项是我预期的,但是当我去尝试安装它时,我被淹没了我认为没有必要的依赖项,比如 NETStandard.Library (1.6.2)、Microsoft.NETCore.Platforms (1.1.0)、System.Runtime (4.3) 及其所有关联(集合、io、安全等)。我认为我不需要添加所有这些依赖项,因为该库以网络框架为目标,但似乎我错了或其他问题。

有人可以提供一些见解吗?

我想我会回答我自己的问题,其实并没有那么复杂。

事实证明 Microsoft.Extensions.Logging 仅针对 netstandard,因此需要所有其他依赖项。

删除 Microsoft 程序包并重新构建自己的程序包后,我可以将它作为依赖项添加到 netframework 项目中,而不会造成任何混乱。

也许这对以后的人有帮助...