我正在使用Microsoft Visual C#2008 Express Edition。 (我道歉 - 这更像是一个MS Vis C#可用性问题,而不是严格的编程问题......)
我写了一个小程序。当我使用调试器在MS VC#中运行它时,一切都很好。当我使用“点击一次”生成要部署的东西时(我使用“来自CD-ROM”选项而不是“来自网站”),然后我将其安装在我的机器(或其他机器)上一切都很好,除了一段代码没有运行!未运行的代码是try / catch循环的“catch”部分。我故意有一个我知道在应用程序中仍然生成异常的错误,所以我可以测试这个问题。 catch会打开一个GUI并要求用户将数据发送给我。在调试器中 - 这很好用。在独立的已发布应用程序中,这不起作用。
任何想法?
我指出我正在运行“Express版”,因为有朋友提到我可能有部署“问题”,而且看起来Express Edition的部署选项有限,而标准版可能就是我的版本需要...(因为我可以使用Windows Installer而不是“click once”发布方法)。
这有什么意义吗?
感谢帮助!
-Adeena (一个老命令行unix C ++程序员,他正在努力理解这个微软“视觉”世界)
答案 0 :(得分:3)
这个代码是否在表单的构造函数/ OnLoad中?在使用/不使用调试器的情况下,此区域存在已知差异。修复通常是推迟代码,直到UI线程处理事件。例如:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
BeginInvoke((Action)LoadStuff);
}
void LoadStuff()
{
// todo...
}