【问题标题】:Visual Studio - How to remove a reference in Release modeVisual Studio - 如何在发布模式下删除引用
【发布时间】:2010-09-20 14:28:32
【问题描述】:

我正在开发一个用于其他应用程序的库,并且由于 NLog,该库具有大量调试和日志记录语句。

当我切换到发布模式时,是否可以排除对 NLog.dll 的引用?

干杯,

【问题讨论】:

  • 好问题。我有一个用例需要在发布模式下删除引用。

标签: visual-studio msbuild release release-management


【解决方案1】:

您可以手动编辑 csproj 文件,并执行以下操作:

<Reference Include="NLog" Condition="'$(Configuration)' == 'Debug'" />

这只使它在调试中引用该程序集。不过,我不建议经常这样做,因为当您更改配置时,此行为不会反映在 Visual Studio 的引用列表中。它在编译时确实有效

【讨论】:

  • 我认为你可以在切换目标后卸载并重新加载 VS。
  • 我广泛使用这种方法,它非常有用。不幸的是,Visual Studio 将生成有关“已禁用”引用的警告。然而,这允许非常重要的场景,例如在 64 位构建和 32 位构建中引用不同的文件。
【解决方案2】:

您为什么要这样做?

如果您想停止记录,您可以通过编程方式关闭记录。性能损失将是最小的。 (即使在记录跨进程时,我在 NLog 上也取得了巨大的成功。)

否则,你需要按照上面的描述包装它。

-斯科特

【讨论】:

    【解决方案3】:

    如果您确定不会使用该 DLL 中的任何代码,则没有理由删除引用。在这种情况下,您可以简单地删除 DLL。

    【讨论】:

      【解决方案4】:

      我知道的唯一方法是完全取出引用并通过反射调用程序集。然后,您应该仅在程序集加载时记录。

      【讨论】:

        【解决方案5】:

        我想不出一个好的方法来做到这一点。除非您为 NLog.dll 编写了存根引用。由于您在代码中使用了引用,因此我看不出如何在发布中将其删除。

        现在可能为时已晚,但将来您可以编写一个类来包装 NLog.dll,然后在一个地方更改它,这样它就不会真正登录发布版本。或者有某种标志。

        【讨论】:

        • 如果您在#if DEBUG 中添加代码,那么在发布模式下编译时它们将被排除
        • 哇,每次调用日志时都这样做听起来很痛苦。我建议包装然后使用 Conditional 属性。
        猜你喜欢
        • 2011-09-02
        • 1970-01-01
        • 2022-11-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-07
        相关资源
        最近更新 更多