2013-03-13 128 views
1

我有一个C#应用程序检查缺少的dll。如果缺失,则会运行一个安装程序,该安装程序将dll安装到GAC中。但是,一旦安装,我发现该程序仍然无法找到DLL(我只是运行引用它的类,看看是否有FileNotFoundException。)有没有一种方法来刷新GAC引用的角度来看运行的应用程序?在不重新启动C#应用程序的情况下刷新GAC引用

+4

装配这是由设计,CLR记住失败装配载荷和以后将始终如一地让他们失望。一个DLL地狱反措施。一个小的shell程序可以实现这一点,然后启动你的应用程序将是一个简单的解决方法。与安装程序没有其他很大的不同。 – 2013-03-13 21:57:15

+0

这是失败的信息存储在CurrentDomain? – tofutim 2013-03-13 23:03:38

回答

1

在尝试调用程序集中的任何方法之前,为什么不在应用程序启动时检查DLL,并在必要时安装而不是等待失败?

另外,保持当前的实现,但你已经安装了DLL后,重装明确使用Assembly.Load(...)

+0

我正在尝试类似的东西。目前如果它失败一次,Assembly.Load似乎失败了该AppDomain。 – tofutim 2013-03-14 01:16:49

+0

......我不能说我很惊讶,但我的第一个建议呢?如果您在安装检查之前未尝试访问装配体中的任何物品,则不应将装配体标记为失败。 – 2013-03-14 01:20:12

相关问题