无法加载文件或程序集
Posted
技术标签:
【中文标题】无法加载文件或程序集【英文标题】:Could not load file or assembly 【发布时间】:2009-06-01 19:31:02 【问题描述】:我正在开发一个将SqlServerCe
与NHibernate
结合使用的系统。在我的驱动程序中,如果我添加 System.Data.SqlServerCe
程序集作为参考,我可以很好地创建和运行对数据库的查询。但是,在尝试使用 NHibernate
时,出现以下异常:
在 mscorlib.dll 中发生了“System.IO.FileNotFoundException”类型的第一次机会异常 附加信息:“System.Data.SqlServerCe”或其依赖项之一。系统找不到指定的文件。
我已经追踪到对Assembly.Load("System.Data.SqlServerCe")
的调用的异常,这似乎应该可以工作。 System.Data.SqlServerCe
程序集在 GAC 中(我也尝试将其添加为 CopyLocal=true
的本地引用,但无济于事),我可以很好地使用它的成员,为什么我不能显式加载它?当我在 Reflector 中打开程序集时,它无法加载 System.Transactions
引用(我也尝试将其添加为本地引用,再次无济于事),因此加载该程序集可能是问题所在,而不是 @987654330 @。
这是一个常见问题吗?可能是系统配置错误?
【问题讨论】:
看起来你从未听说过 Fusion:hanselman.com/blog/… 哦,好工具。它给我的反馈是: LOG:之前看到过相同的绑定,并且失败,hr = 0x80070002。 ERR:预下载检查期间发生不可恢复的错误(hr = 0x80070002)。哪个看起来没什么用——它以前失败过,所以让我们再失败一次?我需要阅读融合文档,希望能更好地解决这个问题。然而,有人指出了我的问题的解决方案——详情如下。 【参考方案1】:显然,这可以通过在 app.config 文件中添加
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="System.Data.SqlServerCe" fullName="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</assemblyBinding>
</runtime>
谢谢!
【讨论】:
是的,上面提到的 fullName 确实是程序集的全名。它为 CLR 提供查找和加载特定程序集所需的信息。您还可以在 .config 文件中的连接字符串中替换该 fullName(代替 partialName)【参考方案2】:这很可能与某些系统(错误)配置有关。
但是,根据设计,SQL Server CE 只是一个单独的 DLL,它可能与您的产品一起提供。
这意味着您只需在System.Data.SqlServerCe
的引用属性中将Copy local
设置为True
,就完成了。
【讨论】:
【参考方案3】:我遇到了类似的问题。我犯的错误是我试图执行 ../obj/x86/Release 中的 .exe,而我应该执行 ../bin/Release 中的 .exe。 (我是 C# 的绝对新手)。
(我也注意到在这个../bin/Release目录下,引用的.dll文件被复制到本地了。)
【讨论】:
以上是关于无法加载文件或程序集的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
能加载文件或程序集“Aspose.Cells”或它的某一个依赖项。无法验证强名称签名
无法加载文件或程序集'netstandard,版本 = 2.0.0.0