在C#中Debug运行情况和直接运行Debug版本编译的exe程序运行情况不一样

时间:2023-01-19 21:01:28
请教高手:我在Debug时没有设任何Breakpoint,所以按道理说应该两种运行方式是一致的。现在VS2010的C#中Debug运行很正常,但在外部运行Debug版编译的exe就会卡在某个地方,请问一下这种情况一般是因为什么原因?谢谢。

12 个解决方案

#1


是不是一边调试一边打开exe程序了?
重新生成,再试试!

#2


这个肯定没有。调试和打开exe文件时间是分开的,而且已经试过很多次,也rebuild了很多次了。

#3


有可能是使用其它资源文件路径问题,检查一下有没有在程序中打开其他文件

#4


外部引用dll的时候,有没有设置复制到本地为True

#5


描述很模糊...看看运行时的用户,运行VS的用户也就是Debug运行时的进程用户一般都是管理员帐号,基本没有安全性限制...

#6


this.BeginInvoke(new Action<FormQuote.EnumProgessState, string>(formQuote.progress), FormQuote.EnumProgessState.OnQryInstrument, "测试完成.");

其实查了一下,就是在打开exe文件时,运行到上面这条语句,它不会调用formQuote.progress(FormQuote.EnumProgessState.OnQryInstrument, "测试完成.")函数,而Debug时会很正常的调用。不知道是为什么。

#7


我是以管理员账户登录Windows的,所以应该没有这个问题。
引用 5 楼 vrhero 的回复:
描述很模糊...看看运行时的用户,运行VS的用户也就是Debug运行时的进程用户一般都是管理员帐号,基本没有安全性限制...

#8


是否在debug目录下有程序调用的dll或文件
而外部调用时exe同级目录没有dll或文件,前者即依赖项缺失

“卡在某个地方”这句话描述不是很清楚

#9


外部调用exe也是在debug目录调用的,需要的dll也都放在debug的Resource下了。
卡在某个地方是:
this.BeginInvoke(new Action<FormQuote.EnumProgessState, string>(formQuote.progress), FormQuote.EnumProgessState.OnQryInstrument, "测试完成.");
语句执行到了,但没调用formQuote.progress(FormQuote.EnumProgessState.OnQryInstrument, "测试完成.")函数,而是卡住了。

引用 8 楼 sj97a007 的回复:
是否在debug目录下有程序调用的dll或文件
而外部调用时exe同级目录没有dll或文件,前者即依赖项缺失

“卡在某个地方”这句话描述不是很清楚

#10


引用 4 楼 wuwo333 的回复:
外部引用dll的时候,有没有设置复制到本地为True

外部引用dll或者exe的时候是需要复制到debug文件夹下的。
一个解决方案,多个项目。还要调整项目的生成地址。
如A程序需调用B程序,那么B项目的生成地址需要改为A的dubug下...

#11


追问一下:是不是debug时VS2010就是调用debug目录下的exe文件来执行呢?

#12


求救啊

#1


是不是一边调试一边打开exe程序了?
重新生成,再试试!

#2


这个肯定没有。调试和打开exe文件时间是分开的,而且已经试过很多次,也rebuild了很多次了。

#3


有可能是使用其它资源文件路径问题,检查一下有没有在程序中打开其他文件

#4


外部引用dll的时候,有没有设置复制到本地为True

#5


描述很模糊...看看运行时的用户,运行VS的用户也就是Debug运行时的进程用户一般都是管理员帐号,基本没有安全性限制...

#6


this.BeginInvoke(new Action<FormQuote.EnumProgessState, string>(formQuote.progress), FormQuote.EnumProgessState.OnQryInstrument, "测试完成.");

其实查了一下,就是在打开exe文件时,运行到上面这条语句,它不会调用formQuote.progress(FormQuote.EnumProgessState.OnQryInstrument, "测试完成.")函数,而Debug时会很正常的调用。不知道是为什么。

#7


我是以管理员账户登录Windows的,所以应该没有这个问题。
引用 5 楼 vrhero 的回复:
描述很模糊...看看运行时的用户,运行VS的用户也就是Debug运行时的进程用户一般都是管理员帐号,基本没有安全性限制...

#8


是否在debug目录下有程序调用的dll或文件
而外部调用时exe同级目录没有dll或文件,前者即依赖项缺失

“卡在某个地方”这句话描述不是很清楚

#9


外部调用exe也是在debug目录调用的,需要的dll也都放在debug的Resource下了。
卡在某个地方是:
this.BeginInvoke(new Action<FormQuote.EnumProgessState, string>(formQuote.progress), FormQuote.EnumProgessState.OnQryInstrument, "测试完成.");
语句执行到了,但没调用formQuote.progress(FormQuote.EnumProgessState.OnQryInstrument, "测试完成.")函数,而是卡住了。

引用 8 楼 sj97a007 的回复:
是否在debug目录下有程序调用的dll或文件
而外部调用时exe同级目录没有dll或文件,前者即依赖项缺失

“卡在某个地方”这句话描述不是很清楚

#10


引用 4 楼 wuwo333 的回复:
外部引用dll的时候,有没有设置复制到本地为True

外部引用dll或者exe的时候是需要复制到debug文件夹下的。
一个解决方案,多个项目。还要调整项目的生成地址。
如A程序需调用B程序,那么B项目的生成地址需要改为A的dubug下...

#11


追问一下:是不是debug时VS2010就是调用debug目录下的exe文件来执行呢?

#12


求救啊