1

サーバー上で実行されている VB プログラムで .Net アセンブリにアクセスしようとしています。よく言及さCould not load file or assemblyれるエラーが表示されます。私は約 60 の異なる Web ページを調べてきましたが、何も解決していません。

起動している実行可能ファイルと同じディレクトリにdllがあります。Appbase で表示file://?/c:されており、これを調査している他の例では、すべてfile:///. それが問題になるかどうかはわかりません。もしそうなら、誰かがそれを修正する方法を教えてもらえますか? 検索してみましfile://?/たが、Google や Bing でクエスチョン マークで囲まれている場合でも、すべての特殊文字が無視されます。

エラーメッセージ:

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 の両方が配置されているパスを指定することで機能しています。これはデフォルトの動作です。

私が把握できる唯一のことは、それがdllを探しているファイルパス「file://?/」の疑問符と関係があるということですが、なぜ疑問符がそこにあるのかわかりません。

于 2013-03-21T12:32:45.593 に答える
0

DLL はアプリケーションの BIN フォルダー内にあるべきではありませんか? アプリがコンパイルされると、そこでアセンブリが検索されます。

于 2013-03-21T06:14:01.647 に答える