1

我正在尝试访问在服务器上运行的 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
4

3 回答 3

1

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

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

于 2013-03-21T05:40:25.647 回答
1

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

在这一点上,我不确定为什么我必须走这条路,但它正在通过我指定二进制文件和 dll 所在的路径来工作,这应该是默认行为。

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

于 2013-03-21T12:32:45.593 回答
0

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

于 2013-03-21T06:14:01.647 回答