RHEL8安装Mono 6.12.0.199后vbc编译报错,csc正常如何解决?
Mono VB编译报错:无法找到Microsoft.VisualBasic.dll的解决方案
问题场景
- 在RHEL8系统手动编译安装Mono 6.12.0.199,安装命令为:
./configure --prefix=/usr/local make make check make install - 编译VB程序时执行
vbc hello.vb,报错:Microsoft (R) Visual Basic Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved. vbc : error BC2017: could not find library 'Microsoft.VisualBasic.dll' - 确认
Microsoft.VisualBasic.dll存在于/usr/local/lib/mono/4.5-api路径下,且相同功能的C#程序通过csc hello.cs编译运行均正常。
原因分析
Mono的VB编译器(vbc)默认未正确识别自定义安装路径下的程序集搜索目录,或安装过程中未生成对应API版本的配置文件,导致编译器无法自动找到Microsoft.VisualBasic.dll。
解决方法
方法1:编译时手动指定程序集路径
执行编译命令时,通过参数明确告知vbc程序集位置:
- 直接引用dll文件:
vbc -r:/usr/local/lib/mono/4.5-api/Microsoft.VisualBasic.dll hello.vb - 添加程序集搜索目录:
vbc -lib:/usr/local/lib/mono/4.5-api hello.vb
方法2:配置环境变量永久生效
设置MONO_PATH环境变量,让Mono全局识别程序集目录:
export MONO_PATH=/usr/local/lib/mono/4.5-api:$MONO_PATH
将上述命令添加到~/.bashrc(当前用户生效)或/etc/profile(全局用户生效)中,执行source ~/.bashrc或重启终端使配置生效。
方法3:重新编译安装Mono并指定API版本
重新执行编译安装步骤,明确指定.NET API版本,确保配置文件正确生成:
./configure --prefix=/usr/local --with-runtime=net45 make make install
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

