我创建了一个 .netstandard 1.2 库,它与 .net 4.5.2 兼容。
在我的图书馆中,我引用了 NetStandard.Library 1.6:

{
    "version": "1.0.0-*",
    "dependencies": {
        "NETStandard.Library": "1.6.1"
    },

    "frameworks": {
        "netstandard1.2": { }
    }
}

我使用 dotnet pack 从中创建了一个 NuGet 包并将其安装在我的 NuGet 服务器上。我创建了一个面向 .NET Framework 4.5.2 的简单控制台应用程序。我尝试安装上面的 NuGet 包,我得到了它需要安装的大量依赖项列表:
Microsoft.NETCore.Platforms.1.1.0
System.Collections.4.3.0
System.Collections.Concurrent.4.3.0
... snip
NETStandard.Library.1.6.0
MyPackage.1.0.0

我假设我看到所有这些包的原因是因为我依赖于元包 NETStandard.Library,但是有没有办法将它安装到完整的 .net framework 4.5.2 项目中而不添加所有这些包?即使我没有任何需要执行的条件编译,我是否应该只将框架 net452 添加到我的库中?

最佳答案

如果仔细查看 System.Collections 包不应该包含任何 .net 完整框架的 DLL。我相信它只是将 System.Collections 作为框架引用。你仍然得到几乎空的 nuget 包,因为你依赖于 NETStandard.Library 包,它定义了实现库所需的各种 api。额外的包实际上不应该在完整框架上做任何事情。

如果它困扰你(对我来说它没有)你可以通过更明确地了解你的依赖来解决它。

例如:

{
    "version": "1.0.0-*",

    "frameworks": {
        "net452" : {},
        "netstandard1.2": {
         "dependencies": {
          "NETStandard.Library": "1.6.1"
         },
       }
    }
}

关于c# - 在 4.5.2 中使用 .netstandard 1.2 库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40897461/

10-10 15:28