我希望我的类库有条件地编译,以便它在我的项目时处于调试模式,而不是在我的项目不是。
例如,我在我的类库中有这个模块:
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
类来实现它,因为它也像任何其他类库一样导入了,并按照我希望的方式工作 - 我当然可以这样做吗?
答案 0 :(得分:2)
如果将类库项目保留在与主项目相同的解决方案中,它将使用与该解决方案中的每个其他项目相同的配置(Debug
或Release
)。这意味着您不必手动检查/取消选中Define DEBUG constant
,因为如果您已将配置设置为Release
,则无法定义。{/ p>
即使您的项目不在同一文件夹中,您仍可以将类库项目添加到解决方案中。以下是如何做到这一点:
右键单击Solution Explorer
中的解决方案并转到Add > Existing Project
。
在打开的文件浏览对话框中,找到类库的.vbproj
- 文件,然后点击OK
。
现在,当您更改编译配置时,它应该反映在整个解决方案上,如果您将配置设置为DEBUG
,您的类库将只定义其Debug
常量。
如果您无法在Solution Explorer
在Visual Studio中,转到Tools > Options > Projects and Solutions > General
。
选中Always show solution
并按OK
。
要使上述工作正常,您还必须更改引用类库的方式。您目前正在这样做的方式是正确的,但在这种情况下它不会起作用,因为您只会引用您的dll的Release
版本。
首先删除您对类库的当前引用。
打开Add Reference
对话框,然后转到Projects
标签。
选择您的课程库项目,然后按OK
。
现在应该从解决方案的当前编译配置中引用类库的输出。