我将在类库中使用#if DEBUG指令。已编译的ClassLibrary.dll将在单独的Application.exe中使用。
我的调试代码是否会在以下情况下执行?
答案 0 :(得分:5)
编译器指令在编译时解释,而不是在运行时解释。因此,如果using应用程序是在RELEASE或DEBUG模式下编译的,则无关紧要。因此
1。)库在DEBUG模式下编译,应用程序在RELEASE =>中编译的是
2.。)库在RELEASE中编译,应用程序在DEBUG中编译=> 否强>
答案 1 :(得分:0)
我有一个类似的问题,尽管我在debug preprocessor指令中配置了调试模式设置,但释放模式仍在使用调试模式设置。原来问题出在如何将类库项目的参考dll添加到我的项目中。有两种方法可以添加对项目的引用。
选项1::将项目的debug / release文件夹中的.dll添加到 依赖它的项目。 问题:这引入了一个问题,如果您添加了对 调试dll版本,即使您在发行版中运行该应用程序 模式,它仍将引用调试版本。
修复::您将必须替换与要运行的模式相对应的.dll。 例如:如果您要在发布模式下运行,则将有 将依赖项dll替换为其相应的发行版本。选项2::添加要引用的项目的项目引用(.csproj)文件。
优势:这可以确保整个解决方案何时生效 内置在发布模式下,可以正确解析所有依赖项 发行模式,当您在调试中构建解决方案时,它将获得全部 调试模式下的依赖项目。这不需要你 干预。option1在哪里有用?->当项目需要您的项目时 参考与您的解决方案不在同一个解决方案中。 您要使用第三方dll的情况。在这种情况下,您 没有第三方代码,但只有dll或它说谎 在另一种解决方案中。
option2何时有用?->两者都有用时 引用项目和被引用项目存在于同一解决方案中 (这是我的情况)。如果您还记得,我所有的项目都存在于 相同的解决方案。
该链接说明了如何通过两种方式添加项目引用: https://www.c-sharpcorner.com/article/project-reference-vs-dll-reference-in-visual-studio/