对于在核心应用程序中选择dll的目标标准和dotnetcore库?

时间:2017-11-13 19:02:50

标签: .net-core .net-standard

我有一个库,目标是NETSTANDARD2_0,由完整的NET461和NETCOREAPP2_0客户端使用。

我想在库中添加一些Core2.0特定的代码。 我将添加APPNETCORE2_0目标并用

包装该部分
#if NETCOREAPP2_0 
#endif

它将创建2个单独的目标DLL。 当我从客户端Core2.0应用程序引用我的库时,它会引用NETCOREAPP2_0 DLL并忽略NETSTANDARD2_0 dll吗?

选择预定义和记录版本的顺序是? 我将很感激文档的链接。

1 个答案:

答案 0 :(得分:2)

这是官方doc on creating these multi-targetted dlls。这解释了如何为每个目标生成不同的dll(例如net461netcoreapp1.0)。

官方doc on how nuget resolves these to find the matching library介绍了如何选择正确的dll:

  

当NuGet安装具有多个程序集版本的程序包时,它会尝试将程序集的框架名称与项目的目标框架相匹配。

     

如果未找到匹配项,NuGet会将程序集复制到小于或等于项目目标框架的最高版本(如果可用)。如果未找到兼容程序集,NuGet将返回相应的错误消息。

附注:您需要NETCOREAPP2_0,而不是APPNETCORE2_0