使用我自己的自定义 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 库项目保留在与主项目相同的解决方案中,它将使用与该解决方案中的所有其他项目相同的配置(Debug
或 Release
) .这意味着您不必手动 check/uncheck Define DEBUG constant
因为如果您将配置设置为 Release
.
无论如何都不会定义它
即使您的项目不在同一个文件夹中,您仍然可以将 class 库项目添加到您的解决方案中。方法如下:
在 Solution Explorer
中右键单击您的解决方案并转到 Add > Existing Project
。
在打开的文件浏览对话框中,找到 class 库的 .vbproj
文件并单击 OK
。
现在,当您更改编译配置时,它应该反映在整个解决方案中,如果您将配置设置为 [,您的 class 库将只定义其 DEBUG
常量 Debug
.
如果您在 Solution Explorer
中看不到您的解决方案:
在 Visual Studio 中,转到 Tools > Options > Projects and Solutions > General
。
选中Always show solution
并按OK
。
要使上述工作正常,您还必须更改引用 class 库的方式。你目前的做法是正确的,但在这种情况下它不起作用,因为那样你只会引用你的 dll 的 Release
版本。
首先删除您当前对 class 库的引用。
打开 Add Reference
对话框并转到 Projects
选项卡。
Select 您的 class 图书馆的项目并按 OK
。
现在应该从解决方案的当前编译配置中引用 class 库的输出。
我希望我的 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 库项目保留在与主项目相同的解决方案中,它将使用与该解决方案中的所有其他项目相同的配置(Debug
或 Release
) .这意味着您不必手动 check/uncheck Define DEBUG constant
因为如果您将配置设置为 Release
.
即使您的项目不在同一个文件夹中,您仍然可以将 class 库项目添加到您的解决方案中。方法如下:
在
Solution Explorer
中右键单击您的解决方案并转到Add > Existing Project
。在打开的文件浏览对话框中,找到 class 库的
.vbproj
文件并单击OK
。现在,当您更改编译配置时,它应该反映在整个解决方案中,如果您将配置设置为 [,您的 class 库将只定义其
DEBUG
常量Debug
.
如果您在 Solution Explorer
中看不到您的解决方案:
在 Visual Studio 中,转到
Tools > Options > Projects and Solutions > General
。选中
Always show solution
并按OK
。
要使上述工作正常,您还必须更改引用 class 库的方式。你目前的做法是正确的,但在这种情况下它不起作用,因为那样你只会引用你的 dll 的 Release
版本。
首先删除您当前对 class 库的引用。
打开
Add Reference
对话框并转到Projects
选项卡。Select 您的 class 图书馆的项目并按
OK
。
现在应该从解决方案的当前编译配置中引用 class 库的输出。