我有一个库,目标是NETSTANDARD2_0,由完整的NET461和NETCOREAPP2_0客户端使用。
我想在库中添加一些Core2.0特定的代码。 我将添加APPNETCORE2_0目标并用
包装该部分#if NETCOREAPP2_0
#endif
它将创建2个单独的目标DLL。 当我从客户端Core2.0应用程序引用我的库时,它会引用NETCOREAPP2_0 DLL并忽略NETSTANDARD2_0 dll吗?
选择预定义和记录版本的顺序是? 我将很感激文档的链接。
答案 0 :(得分:2)
这是官方doc on creating these multi-targetted dlls。这解释了如何为每个目标生成不同的dll(例如net461
和netcoreapp1.0
)。
官方doc on how nuget resolves these to find the matching library介绍了如何选择正确的dll:
当NuGet安装具有多个程序集版本的程序包时,它会尝试将程序集的框架名称与项目的目标框架相匹配。
如果未找到匹配项,NuGet会将程序集复制到小于或等于项目目标框架的最高版本(如果可用)。如果未找到兼容程序集,NuGet将返回相应的错误消息。
附注:您需要NETCOREAPP2_0
,而不是APPNETCORE2_0
。