使用我自己的自定义 Class 库进行调试

Debugging with my own custom Class Libraries

我希望我的 class 库有条件地编译,以便它在我的项目处于调试模式时处于调试模式,而在我的项目不处于调试模式时不处于调试模式。

例如,我的 class 库中有这个模块:

Module MyDebug

    <Conditional("DEBUG")>
    Sub print(ByVal msg As String)
        Debug.Print(Now.ToString("yyyy-MM-dd HH:mm:ss.fff") & " " & msg)
    End Sub

    <Conditional("DEBUG")>
    Sub debugEnd(Byval bool As Boolean)

        Environment.Exit(0)
    End Sub
End Module

当我调试引用此库的项目时,它 运行 调用其中任何一个。

我试过在线搜索,但没有找到任何有用的东西,因为我只能找到与调试实际 class 库有关的东西,而我只希望它发送这些有条件编译的调试项目时的语句。


但是,通过一些试验,我发现如果在 class 库中,我会转到:

'My Project' -> the 'Compile' tab -> 'Advanced Compile Options'

然后勾选 'Define DEBUG constant'(然后构建库),项目在调用时执行 运行 调试语句。

但是,我不完全确定 'Define DEBUG constant' 在 class 库中的行为。当且仅当我的项目处于调试模式时,它是否定义 DEBUG?

如果没有,那么有没有一种简单的方法可以实现我的目标? (我不想每次在项目中的调试和发布之间切换时都必须 tick/untick class 库中的复选框,并且我的 class 库被多个引用项目,无论如何)


请注意,在项目中我引用了 class 库的 Bin -> Release 文件夹中的 .dll,我希望这是引用它的正确方法。


此外,我想问一下 VB 如何通过 Debug class 实现这一点,因为它也像其他 class 一样通过引用导入] 库,并按照我希望的方式工作——当然我也可以这样做吗?

如果您将 class 库项目保留在与主项目相同的解决方案中,它将使用与该解决方案中的所有其他项目相同的配置(DebugRelease) .这意味着您不必手动 check/uncheck Define DEBUG constant 因为如果您将配置设置为 Release.

无论如何都不会定义它

即使您的项目不在同一个文件夹中,您仍然可以将 class 库项目添加到您的解决方案中。方法如下:

  1. Solution Explorer 中右键单击您的解决方案并转到 Add > Existing Project

  2. 在打开的文件浏览对话框中,找到 class 库的 .vbproj 文件并单击 OK

  3. 现在,当您更改编译配置时,它应该反映在整个解决方案中,如果您将配置设置为 [,您的 class 库将只定义其 DEBUG 常量 Debug.

如果您在 Solution Explorer 中看不到您的解决方案:

  1. 在 Visual Studio 中,转到 Tools > Options > Projects and Solutions > General

  2. 选中Always show solution并按OK


要使上述工作正常,您还必须更改引用 class 库的方式。你目前的做法是正确的,但在这种情况下它不起作用,因为那样你只会引用你的 dll 的 Release 版本。

  1. 首先删除您当前对 class 库的引用。

  2. 打开 Add Reference 对话框并转到 Projects 选项卡。

  3. Select 您的 class 图书馆的项目并按 OK

现在应该从解决方案的当前编译配置中引用 class 库的输出。