无法加载.Net程序集

时间:2013-03-20 22:05:10

标签: .net windows vb.net dll .net-assembly

我试图在服务器上运行的VB程序中访问.Net程序集。我收到了经常提到的Could not load file or assembly错误。我已经浏览了大约60个不同的网页,我所做的一切都没有修复它。

我将dll放在与我正在启动的可执行文件相同的目录中。在Appbase中,它显示file://?/c:,在我看到的其他示例中,他们都有file:///。我不知道这是不是问题。如果是的话,谁能告诉我如何解决它?我已经尝试搜索file://?/但忽略了所有特殊字符,即使在谷歌和必应中用问号括起来,我也能说清楚。

错误讯息:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'cgiTest.modCurrentBalance' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Aspose.Cells, Version=7.4.1.0, Culture=neutral, PublicKeyToken=716fcc553a201e56' or one of its dependencies. The system cannot find the file specified.
File name: 'Aspose.Cells, Version=7.4.1.0, Culture=neutral, PublicKeyToken=716fcc553a201e56'
   at cgiTest.modCurrentBalance..cctor()

=== Pre-bind state information ===
LOG: User = WEBSERVER1\Administrator
LOG: DisplayName = Aspose.Cells, Version=7.4.1.0, Culture=neutral, PublicKeyToken=716fcc553a201e56
 (Fully-specified)
LOG: Appbase = file://?/c:/inetpub/intranet/
LOG: Initial PrivatePath = NULL
Calling assembly : cgiTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abaf442583423e6f.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Aspose.Cells, Version=7.4.1.0, Culture=neutral, PublicKeyToken=716fcc553a201e56
LOG: Attempting download of new URL file://?/c:/inetpub/intranet/Aspose.Cells.DLL.
LOG: Attempting download of new URL file://?/c:/inetpub/intranet/Aspose.Cells/Aspose.Cells.DLL.
LOG: Attempting download of new URL file://?/c:/inetpub/intranet/Aspose.Cells.EXE.
LOG: Attempting download of new URL file://?/c:/inetpub/intranet/Aspose.Cells/Aspose.Cells.EXE.

   --- End of inner exception stack trace ---
   at cgiTest.modCurrentBalance.GenerateReport()
   at cgiTest.Module1.ProcessFunction() in q:\visual studio 2010\Projects\cgiTest\cgiTest\Module1.vb:line 65
   at cgiTest.Module1.Main() in q:\visual studio 2010\Projects\cgiTest\cgiTest\Module1.vb:line 41

3 个答案:

答案 0 :(得分:1)

执行程序的用户是否有权访问该文件和文件夹?可能是文件是从具有不同ACL的文件夹中移动而不是复制的,并且代码无法访问它。

检查的最佳方法是获取Process Monitor,将其过滤器配置为仅显示对包含“Aspose.Cells”的路径的访问权限,并查看哪些进程尝试访问该文件(如果它们失败),如果是 - 这是为什么。

答案 1 :(得分:1)

我终于可以使用http://support.microsoft.com/kb/837908中描述的事件处理程序来加载它。

此时我不确定为什么我必须走这条路线,但我正在指定二进制和dll所在的路径,这应该是默认行为。

我唯一可以想到的是,它与文件路径“file://?/”中的问号有关,它正在寻找dll,但我不知道为什么问号是那里。

答案 2 :(得分:0)

DLL不应该位于应用程序的BIN文件夹中吗?当您的应用程序编译时,它将在那里查找程序集。