使用我自己的自定义类库

时间:2016-08-16 20:15:11

标签: vb.net debugging class-library conditional-compilation

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

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

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

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

我尝试过在线搜索,但我找不到任何有用的东西,因为我只能找到调试实际类库的事情,而我只希望它发送这些有条件的编译语句我正在调试我的项目。

然而,通过试验一下,我发现如果在课程库中我会去:

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

然后勾选&#39;定义DEBUG常数&#39; (然后构建库),项目在调用时会运行调试语句。

但是,我并不完全确定&#39;定义DEBUG常数&#39;在类库中。当且仅当我的项目处于调试模式时,它是否定义了DEBUG?

如果没有,那么有一种简单的方法来实现我的目标吗? (每次我在项目中的调试和发布之间切换时,我都不想勾选/取消类库中的复选框,而且我的类库被多个项目引用,无论如何)

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

另外,我想问一下VB如何用Debug类来实现它,因为它也像任何其他类库一样导入了,并按照我希望的方式工作 - 我当然可以这样做吗?

1 个答案:

答案 0 :(得分:2)

如果将类库项目保留在与主项目相同的解决方案中,它将使用与该解决方案中的每个其他项目相同的配置(DebugRelease)。这意味着您不必手动检查/取消选中Define DEBUG constant,因为如果您已将配置设置为Release,则无法定义。{/ p>

即使您的项目不在同一文件夹中,您仍可以将类库项目添加到解决方案中。以下是如何做到这一点:

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

  2. 在打开的文件浏览对话框中,找到类库的.vbproj - 文件,然后点击OK

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

  4. 如果您无法在Solution Explorer

    中看到您的解决方案
    1. 在Visual Studio中,转到Tools > Options > Projects and Solutions > General

    2. 选中Always show solution并按OK

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

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

      2. 打开Add Reference对话框,然后转到Projects标签。

      3. 选择您的课程库项目,然后按OK

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