无法在 Ubuntu 12.04 上使用 vbnc 进行编译

无法在 Ubuntu 12.04 上使用 vbnc 进行编译

我正在运行 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

相关内容