【发布时间】:2017-05-17 10:59:51
【问题描述】:
我正在创建和分发程序集以供其他开发人员使用。 我正在分发我的程序集的发布版本(不是调试)。 在我的程序集的一个类中,我将代码设置为仅在调试模式下运行,使用
#if DEBUG
Console.WriteLine("Debug");
#else
Console.WriteLine("Release");
#endif
如果其他开发人员从他们的项目中引用我的程序集并在调试模式下运行他们的项目,我的调试是否只能有条件地运行?
【问题讨论】:
-
如果您分发代码的 RELEASE 版本,这是不可能的,因为该代码已在构建时被编译器剥离
-
它们是预编译器语句。所以他们在编译时处理。因此,非调试版本将在编译时从程序集中删除。
-
这是一个 XY 问题。使用
Debugger.IsAttached进行运行时检查。语义略有不同,但也许这就是你想要的?不能肯定地说,这个问题没有明确说明。 -
这取决于他们添加到项目中的可执行文件。如果另一个项目使用您的程序集,他们将添加 bin 文件夹中的 dll。 bin 文件夹将有一个 Release 和 Debug 文件夹。所以这取决于他们使用哪个文件夹。
-
@jdw 不,它没有。他说他只分发“发布”版本。
标签: c# .net conditional-compilation