我正在运行 Ubuntu 12.04 LTS。为了尝试一些 .NET 练习,我安装了以下 mono 包:
sudo apt-get install mono-runtime mono-mcs mono-vbnc
现在,我的 mono csharp 编译器 (mcs) 运行正常。但是,VB.NET 编译器 (vbnc) 抛出了以下错误:
找不到库“System.Design.dll”
知道我错过了什么吗?
答案1
vbnc 默认会添加许多参考资料,显然其中一些在 Ubuntu 上并未默认安装。
我不知道您必须安装什么才能获得 System.Design.dll,但您可以通过传递 -noconfig 来禁用默认引用:
vbnc -noconfig test.vb
请注意,这还将禁用其他一些默认功能,最明显的是所有默认导入也将被禁用。
例如这个代码:
Class Test
Shared Sub Main
Console.WriteLine ("Hello World")
End Sub
End Class
编译如下:
vbnc -noconfig test.vb
将会失败:
test.vb (3,21) : error VBNC30451: 'Console' is not declared. It may be inaccessible due to its protection level.
修复很简单,只需将 -imports: 传递给 vbnc
vbnc -noconfig test.vb -imports:System
现在就可以顺利编译了。
答案2
Rolf,不幸的是你的解决方案在 Ubuntu 12.04.2 LTS 中不起作用:
$ vbnc -noconfig test.vb -imports:System
Visual Basic.Net Compiler version 0.0.0.5943
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
Error VBNC30456: 'ComponentModel' is not a member of 'Global.System'.
Error VBNC30456: 'CodeDom' is not a member of 'Global.System'.
Error VBNC30456: 'ComponentModel' is not a member of 'Global.System'.
Error VBNC30456: 'CodeDom' is not a member of 'Global.System'.
Error VBNC30456: 'CodeDom' is not a member of 'Global.System'.
There were 5 errors and 0 warnings.
实际上你应该使用vbnc2编译你的代码,如下所示:
$ vbnc2 test.vb
Visual Basic.Net Compiler version 0.0.0.5943
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
Assembly 'test, Version=0.0, Culture=neutral, PublicKeyToken=null' saved successfully to 'test.exe'.
Compilation successful
祝你好运!
答案3
我已经按照以下方式解决了同一问题:
sudo apt-get install libmono-system-design4.0-cil