Nuget / .NET Core,如何隐藏程序包中的依赖项

问题描述

我使用.NET Core 3.1(在.NET Framework中是相同情况)进行以下(简化)设置

项目A(低级工具库)引用了NLog包。工具包提供了围绕NLog自定义包装,并公开了我们的日志记录界面。

  1. 项目A被部署为nuget程序包。

  2. 项目B引用项目A。

问题:我目前可以使用NLog;即使在项目B中未引用NLog,也无法在项目B中的C#文件中使用。项目A的工具的目的是封装和隐藏NLog,因此,理想情况下,项目B中不可能直接使用NLog

问题:是否可以以某种方式防止NLog(或项目A依赖项中的所有公共类型)在项目B中可见?

注意:我想也许可以使用nuspec来做到这一点,但我找不到。

更新: 参考注释中的解决方案不起作用,因为当我们从Project A调用引用nuget NLog的方法时,会得到类型初始化异常。 System.IO.FileNotFoundException:无法加载文件或程序集'NLog,Version = 4.0.0.0

也许乔恩·斯凯特(Jon Skeet)的评论是正确的,对此没有解决方案吗?

我认为有可能以某种方式复制NLog.Dll(使其在“ Files”标签中可用,因此无需直接引用即可显示NLog.Dll,但需要进行测试,并且此解决方案不是很好即使可行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)