2011-07-21 148 views
0

我有一个正常的winforms应用程序。我运行它,并在另一个.dll(解决方案的另一个项目部分)中调用某些逻辑。我得到一个错误(我自己的除外)说,无法加载组件等等等等无法加载程序集

我用汇编日志查看器,但无法找到一个问题 - 我所发现的是,Windows服务程序使用安装/部署在另一个帐户上。我的winforms应用程序调用这个服务,它反过来调用它自己和不同的.dll中的逻辑。

这可能是一个问题? 感谢

回答

0

检查项目.NET框架版本,您的装配.NET框架版本,问题可能出现。

问候。

0

确保它在寻找组件处于你是从运行应用程序的同一目录下,或者它的注册在GAC(全局程序集缓存) - 这是正确的版本。

0

确保您的应用程序及其所有依赖项都是32位或全部64位程序集。

+0

我该怎么做?这个问题是间歇性的btw。 – blade33

+0

@ blade33:位不是间歇的,所以这可能不是你的情况的问题。在.DLL或.EXE上运行'dumpbin/headers'和'dumpbin/clrheader'来找出平台。 –

+0

您也可以检查Visual Studios中的配置管理器,如果它错误(然后重新编译),那么您将在其中修复它。 – JGWeissman

1

如果您使用FileDialog并打开/保存/将文件写入另一个目录,而不是包含您的exe/dll的目录,它将更改程序工作目录(如果未设置FileDialog.RestoreDirectory = true)。这一个让我适应了一段时间,并会解释为什么它会出现间歇性。

+0

这是“间歇性”故障的最可能原因。当然,在工作目录中查找DLL是一个好主意。 –

+0

如何设置该值? – blade33

+0

RestoreDirectory是FileDialogs的一个属性。例如,如果您使用的是名为ofd的OpenFileDialog,则只需set ofd.RestoreDirectory = true即可。这也将适用于SaveFileDialog。 – alexD