【发布时间】:2016-01-21 07:30:30
【问题描述】:
我遇到了一个问题,我不小心离开了“Debugger.Launch();”我的项目中的代码,这是调试所需的,因为应用程序是 Windows 服务。
现在,我已经完成了项目,它按预期工作(大多数情况下)但是,每次您启动服务时,它都会询问您是否要附加调试器。
服务已打包到一个 MSI 包中,并且或多或少可以交付。处理所有包装等的人不在办公室,没有其他人知道如何做或有权这样做。
背景故事说得够多了。
- 我能以任何方式禁用调试器代码而不重新打包 服务? - 还是我必须重新包装?
- 是否有任何启动命令或阻止它请求的东西 调试器?
我一直在搜索这方面的内容,但现有的大部分问题/帖子都与“预构建”解决方案有关,但我正在寻找“后构建”解决方案。
[编辑]
解决方案(某种......)
我仍然不知道是否可以防止附加,但根据我所做的研究,这似乎是不可能的。因此我不得不重新编译服务。
正如许多评论的那样,我在 app.config 中实现了一个键,并在“Debugger.Launch()”周围实现了一个简单的“if-case”,它们运行良好。现在我可以简单地选择是否附加调试器。
Tamir Vereds 解决方案在我的本地机器上运行,我什至没有在客户服务器上尝试,因为他还说我的代码基于这种调整。
我会接受这个答案,因为它可以部分解决最初的问题。
谢谢大家的回答。
【问题讨论】:
-
你应该修改你的应用程序以允许通过
app.config AppSettings控制调试功能 -
@Kilanny 你在说什么? OP 正试图避免重建他们的项目。
-
@CodeCaster 这就是我的意思。 OP只需要修改他的代码一次,构建一次,然后OP就可以通过
app.config来控制特性 -
@Kilanny 尝试再次阅读问题。 OP 无法修改他们的代码。
-
我认为不可能阻止一些已经编译成二进制的代码运行(除非通过修补二进制使用一些逆向工程)
标签: c# .net debugging windows-services