相当于PCL库中的System.Diagnostics.Trace

bry*_*ook 6 c# portable-class-library

我很惊讶地发现System.Diagnostics.Trace未包含在可移植类库配置文件中.但是,System.Diagnostics.Debug可用.

我正在将库移植到PCL,并且通常使用Trace语句为消费者提供额外的故障排除.出于性能原因,我希望对程序集进行优化,因此我只在NuGet包中发布程序集的Release版本.

我的理解是System.Diagnostics.Debug的方法是有条件编译的,因此仅在程序集包含DEBUG指令时才有用.

如果我更改我的代码以使用System.Diagnostics.Debug然后在Release中编译该方法是没用的 - 在PCL中是否有System.Diagnostics.Trace的替代方法,或者我是否必须在我的发布版本中包含DEBUG指令?或者我应该考虑另一种方法吗?

Eri*_*der 5

有一个nuget包:

https://www.nuget.org/packages/System.Diagnostics.TraceSource

https://www.nuget.org/packages/System.Diagnostics.Tracing/4.0.21-beta-23516

这是微软用于跟踪的新PCL.

到目前为止似乎处于测试阶段......

  • 这不是我的图书馆,而是微软的! (2认同)
  • @eschneider是对的.`System.Diagnostics.Tracing`是用于跟踪的可移植API,是.NET Core的一部分.最正式的来源是我们官方NuGet包的链接.它由微软拥有并得到全面支持.@ daniel-plaisted的回答虽然正确,现在已被取代. (2认同)

Dan*_*ted 1

您可以在单个 C# 文件中指定条件编译指令。因此,您可以围绕 Debug.Trace 创建自己的包装器,并仅为该代码文件定义 DEBUG 指令,这将允许您从发布 DLL 调用 Debug.Trace。

  • 你能举个例子吗?我相信其他人会发现有帮助。 (4认同)