在 C# 中分离调试和发布代码

2023-11-26

我正在编写一个应用程序,其中我有一些debug我不想删除的代码,但我希望在编译发布/发布时对其进行修改或删除。例如,我想在调试版本中进行类似的操作:

MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

...在发布版本中变成这样:

MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

理想情况下,我希望做这样的事情:

#if DEBUG_BUILD
   MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#else
   MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif

我不想添加/删除条件编译符号每次更改构建类型时在项目属性中;它应该自动发生。有没有办法在 Microsoft Visual C# 2008 Express Edition 中执行此操作?谢谢。


Use:

#if DEBUG
  // Debug work here
#else
  // Release work here
#endif

如果您这样做,只需确保打开属性页(项目属性的构建页面)中的“定义调试常量”开关,它就会起作用。对于新的 C# 项目,此值默认设置为 true。DEBUG将由 C# 编译器为您定义(默认情况下)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中分离调试和发布代码 的相关文章

  • 如何使用 C# 打印 pdf

    我在 C 应用程序中使用 进程 打印 pdf 文件 但是我无法获取打印状态 我发现可以通过 System management 和 System printing 与打印机 队列进行交互 我做了很多尝试 但都出错了使用这两个命名空间但无法打
  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • C/C++ 中随机数生成器的实现[重复]

    这个问题在这里已经有答案了 我对 C 中随机数生成器的实现有点困惑 它也与 C 中的明显不同 如果我理解正确 对 srand seed 的调用会以某种方式初始化可通过 rand 访问的隐藏变量 种子 该变量又将函数指向预先生成的序列 例如例
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 隐形打开的弹出窗口

    第二天就解决这个问题 要重现 请创建新的 WPF 应用程序 xaml
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • 在非指针变量和类成员上放置 new

    考虑以下示例 include
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • 函数模板重载解析期间的 MSVC 与 Clang/GCC 错误,其中一个函数模板包含参数包

    当我使用参数包时 我注意到这样一种情况 如下所示 在 gcc 和 clang 中编译得很好 但在 msvc 中却不行 template
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函
  • C# 中成员访问中的问号是什么意思?

    有人可以向我解释一下以下代码中会员访问中的问号是什么意思吗 它是标准 C 的一部分吗 尝试在 Xamarin Studio 中编译此文件时出现解析错误 this AnalyzerLoadFailed Invoke this new Anal
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 让 CMake 声明一个虚假目标

    我想生成一些compile时间常数 这第一个答案另一个问题让我非常接近 来自我的 CMakeLists txt add library PROJECT NAME STATIC CXX SRCS compile time hpp add cu
  • 在 java/swing 中关闭窗口时采取的正确操作是什么?

    我刚刚在我的 CustomUIPanel 类中编写了这个测试代码 public static void main String args final JDialog dialog CustomUIPanel createDialog nul
  • 查找源代码从 git 分支的位置

    我有一个 git 存储库 或多或少涵盖了项目历史 和单独的源代码 只是一个只有几个文件的 tarball 它们在不久前 实际上是在 2004 年或 2005 年的某个地方 分叉了 tarball 的源代码已经发生了相当多的变化 我想从中合并
  • 闭包范围未捕获? — 咖啡脚本

    好吧 我不知道如何表达这个问题的标题 openDir path gt socket emit get metadata path data gt columnBox div div class columnbox for item in d
  • 如何在浏览器中更改“文件上传”对话框的标题?

    是否可以在任何常见浏览器 例如 IE 或 FireFox 中更改 文件上传 对话框的标题 检查文档页面我找不到这样的东西 我想这是不可能的 In the 控制类型来自Forms我们找到的部分the input type file 描述为 文
  • Objective-C 中的受保护方法

    Objective C 中受保护的方法相当于什么 我想定义只有派生类可以调用 实现的方法 You can simulate通过执行以下操作对方法进行受保护和私有访问 在类扩展中声明您的私有方法 即在类的 m 文件顶部附近声明的未命名类别 在
  • Django 模板中带有空格的字典键

    我试图在 HTML 模板中显示 view py 中的字典 例如 test works True this fails False 并在模板中 这工作没有问题 test works 但是 字典键在单词之间有空格 例如 这失败了 时不起作用 t
  • PersistenceConstructor 参数变量名称与实例变量名称不匹配

    我试图坚持以下对象spring data mongodb版本1 1 1 RELEASE Document public static class TestObject private final int m property Persist
  • ini_set('memory_limit', ...) 不起作用并返回 false;不明白为什么

    ini set memory limit 128M Returns false memory limit unchanged 我无法找到可能导致此问题的原因列表 到目前为止我检查过 安全模式 禁用 禁用功能 空 php admin valu
  • 创建没有 Cron 作业的计划任务

    需要创建计划任务 但无法使用 Cron 作业 托管提供商发出警告 在 45 分钟内多次运行 cron 作业违反了他们的规则 可能会导致关闭帐户 php 脚本 将 txt 中的数据插入到 mysql 数据库 应该每分钟执行一次 即应该调用此链
  • 使用 unicode 字符填写 pdf 表单

    我正在尝试使用 c 将一些 unicode 字符 阿拉伯语 插入 PDF 表单 我使用了 iTextSharp 库 但是当我插入字符并将字符保存在 PDF 文件中时 unicode 字符不会显示 直到我双击字符的位置应该会出现 string
  • Python:exec() 代码块和 eval() 最后一行

    我有一个字符串文字 其中包含一行或多行 可信 Python 代码 我想exec 块 同时捕获最后一行的结果 更具体地说 我想要一个函数exec then eval返回以下内容 code x 4 y 5 x y assert exec the
  • webpack-dev-server 保存文件时不更新包

    我正在从头开始自学 webpack 并且我正在尝试使用webpack dev server当我更改应用程序文件中的 js 并显示更改时 实时更新浏览器 假设我有以下内容package json name webpack babel vers
  • Pig 条件运算符

    考虑下面的关系 test LOAD input USING PigStorage as a chararray b chararray 有没有办法达到以下效果 if b 1 a abc else if b 2 a xyz else reta
  • 使用分页和 JavaScript 链接时,如何从 ASP.NET 网站上抓取信息?

    我收到了一份员工名单 该名单应该是最新的 但它与用 ASP NET 编写的 Intranet People Finder 不匹配 由于信息很敏感 我无法访问人员查找器正在使用的数据库 因此我获取信息的唯一方法是从顶部的高层开始抓取结构 然后
  • C++ 中“删除”后指针是否保证保留其值?

    灵感来自这个问题 假设在 C 代码中我有一个有效的指针并且正确delete它 根据C 标准 指针将变得无效 3 7 3 2 4 释放函数将使引用已释放存储的所有部分的所有指针无效 至少在大多数实现中 它保留该值并将存储与以前完全相同的地址d
  • dojo 中以编程方式创建的小部件与以声明方式创建的小部件之间的区别?

    我知道在 dojo 中我们可以通过两种方式创建任何小部件 以编程方式 声明式地 要以编程方式创建小部件 我们将使用 JavaScript 而以声明方式创建小部件 我们将在 HTML 标记中使用 dojo 属性 有人可以解释一下它们之间有什么
  • 如何访问Composite的父命名容器?

    我有一个 JSP 2 0
  • Angular-ui-bootstrap 模式不传回结果

    我遇到了 Angular ui bootstrap 模式服务的问题 我已经根据示例设置了模式 http angular ui github io bootstrap 但如果我从模态内容中删除列表项并将其替换为文本区域和不同的 ng mode
  • 在 C# 中分离调试和发布代码

    我正在编写一个应用程序 其中我有一些debug我不想删除的代码 但我希望在编译发布 发布时对其进行修改或删除 例如 我想在调试版本中进行类似的操作 MessageBox Show ex ToString Error MessageBoxBu