我刚刚将我的 64 位 ubuntu 14.04.2 LTS 升级到了最新的单声道。我按照 this page 上的说明进行操作几个月前,今天之前一直在使用 mono 3 没有问题。今天我升级了,这让我升级到了 mono 4.0.1:
$ mono --version
Mono JIT compiler version 4.0.1 (tarball Tue Apr 28 11:47:58 UTC 2015)
我已经使用 monodevelop 成功编译了这个程序,但完全相同的问题出现在 VS2013 编译的二进制文件中[换行符与它们在输出中出现的完全相同]:
$ file RTAM_Basic_Pre.exe
RTAM_Basic_Pre.exe: PE32 executable (console) Intel 80386 Mono/.Net Assembly, for MS Windows
$ mono RTAM_Basic_Pre.exe
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualBasic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
File name: 'Microsoft.VisualBasic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualBasic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
File name: 'Microsoft.VisualBasic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
事情是,我真的很确定该文件存在:
$ pwd
/usr/lib/mono/gac/Microsoft.VisualBasic/11.0.0.0__b03f5f7f11d50a3a
$ ls -l
-rw-r--r-- 1 root root 350720 Apr 27 12:00 Microsoft.VisualBasic.dll
$ file Microsoft.VisualBasic.dll
Microsoft.VisualBasic.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
错误可能是“......或其依赖项之一”,但我不清楚如何实际诊断正在发生的事情。
最佳答案
通过tracing一个简单的 VB helloworld 程序,带有 MONO_LOG_LEVEL=debug MONO_LOG_MASK=asm
我发现了以下内容:
Mono: The request to load the assembly Microsoft.VisualBasic v11.0.0.0 was remapped to v10.0.0.0
原来 v11.0.0.0 版本号实际上是不正确的,这个拉取请求应该修复它:https://github.com/mono/mono-basic/pull/8
关于vb.net - Mono 找不到似乎存在的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009444/