启动应用程序时有时会出现FileNotFoundException

时间:2010-03-04 12:52:18

标签: c# wpf

自动更新我的WPF应用程序,我有这个策略:

  • (1)process.exe启动
  • process.exe查找update =>有更新
  • process.exe制作自身的副本=> process_copy.exe
  • process.exe使用“更新”参数启动process_copy.exe
  • process.exe退出
  • (2)process_copy.exe启动
  • process_copy.exe查看“更新”参数,下载更新到process.exe
  • process_copy.exe启动process.exe
  • process_copy.exe退出
  • process.exe启动

请注意,我的应用程序使用了一个dll。

此策略正在运行,但有些时候(不是每次)在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run

启动时启动应用程序时

有时它会在(2)处崩溃,并带有

  

System.IO.FileNotFoundException未处理     Message =“无法加载文件或程序集'ManagedWinapi,Version = 0.3.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。

我不明白它为什么会崩溃。 如果它可以从(1)开始,为什么它(有时)不能从(2)开始?

有人有解释吗?

提前感谢您的回答

3 个答案:

答案 0 :(得分:0)

选项0:你知道'ManagedWinapi'的依赖吗?如果没有,请使用Reflector确定它们。找到其中一个可能存在问题?

选项1: 尝试运行ProcessMonitor以确定偶尔会丢失应用程序的具体内容。 (“或其中一个依赖” - 可以是任何数量的东西。

选项2: 这是一个间歇性的问题。您的复制操作是否异步,或者您是否绝对确定“process_copy.exe”PLUS是否已更新您可能正在复制的任何其他组件?

答案 1 :(得分:0)

尝试使用 AppDomain.CurrentDomain.AssemblyResolve 事件查看其查找文件的内容和位置

答案 2 :(得分:0)

Finnaly,我已经在我的应用程序中集成了这个dll,所以我没有更多...这很丑陋但正在工作