C#开发环境中启动运行和单独拷贝exe文件执行有何不同

书小宅 2020-10-30 02:27:04
相同的数据库和代码,在本机Visual studio中点击运行会异常退出,但编译后将bin目录下的.exe文件和.dll文件(包括出现异常退出的文件的.dll)拷贝到另一台电脑上执行,按理说代码有误,执行.exe的时候应该是出现错误的,但在另一台电脑上确看不出问题(或者说,可能有问题,但是没有表现出来),这是什么原因呢?两种运行机制有何不同?
...全文
2531 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
真正懂得懂调试的人的代码回是这样的代码:
        [STAThread]
public static void Main(string[] args)
{
#if DEBUG
Application.ThreadException += Application_ThreadException;
#endif
#if DEBUG
Process();
#else
try
{
Process();
}
catch(Exceptin ex)
{
........
}
#endif

[Conditional("Release")]
static void test1()
{

}

[Conditional("DEBUG")]
static void test2()
{

}

等等,用来区分调试还是发布版本。

编写代码的目的不是为了发布,编写代码是最低级的工作,编写代码的目的是为了通过测试。而要通过测试,起码得表现得会做调试。
  • 打赏
  • 举报
回复
引用 4 楼 书小宅 的回复:
好的,代码块确实有用try,那楼主说的异常设置在vs2019里面是在哪里打开的呢?


这个可能就是你的知识和经验的问题,因为这个在初学者学习时老师通常不会告诉你。

许多人开发代码时写 try....catch 纯粹是为了自欺欺人、欺骗开发领导的方式。在开发中,就是要尽早地让 bug 跳出来,只有让 bug 被 vs 开发环境捕获,你才知道下一步该干什么事情。只有经过上万次测试的代码,才发布。而发布的 Release版本通常才需要捕获应用程序顶层 Exception,进行统一的处理(例如给用户一个统一的提示对话框,或者记入日志),让程序不至于因为“用户代码没有错误捕获”而退出进程。

开发中滥写 try.....catch是糊弄自己的,因此造成程序无法真正调试。你根本不能在调试器自动断点在真正出错的语句去调试堆栈上的每一个入口语句环境。换句话说,滥写 try....catch 根本不懂调试,写代码完全是靠蒙、靠抄代码。
  • 打赏
  • 举报
回复
引用 楼主 书小宅 的回复:
相同的数据库和代码,在本机Visual studio中点击运行会异常退出


“懒”到这种程度,你连执行到哪一行代码(行号和上下文代码)出错都懒得说明白出来吗?
merryland 2020-10-31
  • 打赏
  • 举报
回复
看看,多谢分享!
wanghui0380 2020-10-30
  • 打赏
  • 举报
回复
这个得看你用的什么版本的vs,早期版本的vs调试默认会启用“启用visual studio承载”(我个人记得应该是vs15以前把,太早了记不清了) 在visual studio承载环境,vs调试和直接运行,有时候会表现为两种状态
书小宅 2020-10-30
  • 打赏
  • 举报
回复
引用 5 楼 书小宅的回复:
[quote=引用 2 楼 qq_30335331的回复:]try的代码 如果catch为空 运行的时候是不抱错的 调试的时候报不报错 取决于vs的异常设置 没有try的代码 异常 不管怎么运行都会报错
还有楼主说的catch为空是什么意思,产生错误了,不是应该由catch捕捉到错误?[/quote] 懂楼主说的意思了 感激
ziqi0716 2020-10-30
  • 打赏
  • 举报
回复
猜不出来啊...
书小宅 2020-10-30
  • 打赏
  • 举报
回复
引用 2 楼 qq_30335331的回复:
try的代码 如果catch为空 运行的时候是不抱错的 调试的时候报不报错 取决于vs的异常设置 没有try的代码 异常 不管怎么运行都会报错
还有楼主说的catch为空是什么意思,产生错误了,不是应该由catch捕捉到错误?
书小宅 2020-10-30
  • 打赏
  • 举报
回复
引用 2 楼 qq_30335331的回复:
try的代码 如果catch为空 运行的时候是不抱错的 调试的时候报不报错 取决于vs的异常设置 没有try的代码 异常 不管怎么运行都会报错
好的,代码块确实有用try,那楼主说的异常设置在vs2019里面是在哪里打开的呢?
书小宅 2020-10-30
  • 打赏
  • 举报
回复
引用 1 楼 OrdinaryCoder的回复:
正常来说只是C#程序 装VS的话 各式 .NET 环境应该很全 可能出现装VS的运行没问题 没装VS的有问题 你现在这种情况反过来 猜测可能引用了C++或者其他语言编写的库 而你本机没有这个库所需的环境 而另一台机器有
另一台电脑是新的,没配什么东西,只是单纯地拷贝了exe和dll
qq_30335331 2020-10-30
  • 打赏
  • 举报
回复
try的代码 如果catch为空 运行的时候是不抱错的 调试的时候报不报错 取决于vs的异常设置 没有try的代码 异常 不管怎么运行都会报错
OrdinaryCoder 2020-10-30
  • 打赏
  • 举报
回复
正常来说只是C#程序 装VS的话 各式 .NET 环境应该很全 可能出现装VS的运行没问题 没装VS的有问题 你现在这种情况反过来 猜测可能引用了C++或者其他语言编写的库 而你本机没有这个库所需的环境 而另一台机器有
WebBrowser 本WebBrowser编程技术包括Delphi、C#、VC++、VB等编程资料的集合,其的 实例大多以Delphi为示例讲解,Delphi7 IDE开发环境。 IE_WebBrowser编程技巧 修改WebBrowser的header信息? Delphi查看WebBrowser提交之前的数据头 用TWebBrowser组件在DELPHIPOST数据和取得网页源文件 在 WebBrowser 直接载入流,不通过文件 判断下载网页成功 WebBrowser 失去焦点问题的解决 添加到收藏夹和整理收藏夹 使WebBrowser获得焦点 提取网页所有链接 Web字体大小 Web命令操作 WebBrowser Navigate 的 参数 EmptyParam Web控件不缓存网页,也不从缓存读取 禁止WebBrowser复制 CTRL+C 在WebBrowser窗口上模拟KeyBd_Event 在使用WebBrowser控件,先要 初始化和结束程序后要终止化(Initialization & Finalization) 自定义浏览器上下文菜单 自定义浏览器 C#调用WebBrowser查看源文件的功能 ----------------------------------- WebBrowser与MSHTML 直接在WebBrowser写HTML字符串 在webbrowser查找字符串并定位 把图片拷贝进剪贴板 IHTMLDocument的ExecCommand 处理事件的Internet Explorer的DOM 禁止WebBrowser右键弹出菜单 禁止TWebBrowser图像显示 访问HTML的DOM不使用WebBrowser 如何填写空白(about:blank)页的表单 屏蔽WebBrowser的Javascript 创建运行时的IHTMLDocument而不在WebBrowser内 HOOK Webbrowser 替换WebBrowser的窗口过程 Microsoft.XMLHttp的属性和方法的简介及使用 ------------------------ IE相关的 清空IE缓存 单独删除某一URL的缓存 清空历记录 读取IE历史记录 防止脚本关闭WebBrowser 连接是否有效 InternetCheckConnection res协议可以使浏览器显示储存在资源HTML 往IE嵌入工具条 阻断弹出式广告的BHO 自动填表的IE面板插件 使用Delphi开发IE按钮扩展 使用Delphi开发IE右键菜单扩展 IE异步可插入协议扩展 Delphi开发IE下载扩展 创建3721样式的Google搜索扩展 HTML代码过滤技术 GetDefaultBrowser 得到的HTML代码的IE窗口 下载网址wininet ------------------------------- 注意啦,需要HTF 阅读器:http://sites.google.com/site/htfresource/home

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧