Serilog 接收器(dll 文件)未复制到 iOS 应用程序

Serilog sinks (the dll files) are no copied in to the iOS app

我正在尝试在 Xamarin Forms iOS 应用程序中将 Serolog 与 Serilog.Sinks.Xamarin (v 0.1.37) 和 Serilog.Sinks.Elasticsearch (v 8.0.1) 一起使用。 所有 nugets 都安装在 Xamarin Forms 项目和 Xamarin iOS 项目中。

当我尝试创建 Logger(在代码中或从配置中)时,它失败并提示 "Couldn't find file Serilog.Sinks.Elasticsearch"。如果我删除 Serilog.Sinks.Elasticsearch,那么它会抱怨另一个。

我做了一些挖掘,我可以看到 Sink dll 被复制到 '''\bin\iPhoneSimulator\Debug'''

但当它在模拟器中 运行 时,它们不存在于应用程序中:

知道为什么吗?

如果您添加 Serilog Sinks 并在配置文件中配置它们,然后从该文件创建 Serilog 配置,然后从 Serilog 配置创建 Serilog 记录器 ==> 应用程序中没有任何直接代码引用Sinks dll -> 它们将从应用程序中删除。 任何在运行时动态加载的 .dll 都可能发生这种情况。 为防止这种情况,您必须从这些 dll 中对任何函数或对象进行虚拟调用。这样就有App代码调用它们->它们不会被移除。