在Ubuntu中进行VB.NET编程

我刚刚开始上第六年级学院,打算修读计算机A级课程。我被告知第一年的所有编程都是在Windows上用VB.NET进行(我相信在第二年你会有更多自由...)
我确实有一个Windows XP分区,你可以免费下载Visual Basic Express Edition,但是我想知道在我的学习中,我能在Ubuntu上使用到什么程度(Mono或其他任何东西)?有人能给我一些指导吗?
实际上,如果要实现这个目标,我需要能够在Ubuntu和Windows上使用相同的文件/项目/等等 - 这样我就可以在学院的Windows机器上工作,更重要的是老师们可以查看和评分我的作品!(我不想特意问我的老师关于我使用Ubuntu的事情,我更愿意融入并成为一个普通的学生...)

快来看看Mono和MonoDevelop吧!http://www.mono-project.com/ - Bilal Akhtar
1我只想说,我喜欢用VB.net进行开发,它是我最喜欢学习的语言之一。不幸的是,当我开始学习VB.net时,我已经上过C++和Java的课程,并且对编程非常厌恶。很高兴看到学校正在转向以VB作为入门基础。 - TheXed
有趣。我很好奇,VB.net相比C#(或Java)有什么优势呢? - NoBugs
2个回答

使用MonoDevelop,但要注意跨平台.NET开发的怪癖。
首先,通过在软件中心找到它或输入命令来安装Mono。
sudo apt-get install monodevelop mono-vbnc

MonoDevelop和Visual Studio Express相当,主要区别如下:
- MonoDevelop不支持WPF(Windows Presentation Foundation),但这应该没什么关系,因为微软计划在Windows 8发布时淘汰WPF。 - 确认正在使用正确的.NET框架目标。创建解决方案后,右键单击项目,选择“选项”->“生成”->“常规”。与在Windows上针对特定版本的.NET没有太大区别。
除了这些问题外,我并没有发现任何我无法忍受的缺失。
唯一可能会让你遇到麻烦的其他问题(与Mono无关)是经典的换行符问题。*nix仍然使用LF,而Windows仍然使用CRLF作为换行符,所以当你在Windows/*nix之间传输源文件时,需要注意。据我所知,MonoDevelop默认以UTF-8保存源文件,而VS以Windows ASCII(带有Windows特定换行符的windows-1252拉丁ASCII)保存源文件。如果你收到使用Visual Studio创建的源文件,可能需要转换格式才能在*nix中正常工作。
如你所见,跨平台的.NET开发一开始可能有些挑战,但在我看来,这是值得的。我喜欢MonoDevelop简洁的界面(VS中的视觉效果大多数时候只会妨碍工作),它加载速度比VS快得多(如果你通常不会一直保持IDE打开,这很有用),而且它占用的空间更小,没有额外的不必要插件(VS在这方面真的很烦人)。
安装它很容易,只需使用sudo apt-get install monodevelop命令即可。此外,像NUnit(用于单元测试)这样的流行工具已经移植到*nix上,并且在其中运行非常完美。Windows版本的MonoDevelop有点糟糕(至少我上次尝试时是这样)。
更新:
要使VB代码编译,你还需要安装VB编译器模块。
sudo apt-get install mono-vbnc

我还更新了这个答案,删除了一些不再相关的问题。

1我收到一个错误信息:错误:找不到Visual Basic .NET编译器(Mono 2.4.4)(测试)(这只是尝试运行默认预设的Hello World VB.NET控制台应用程序) - 8128
3@fluteflute 编译器找不到是因为它没有安装。显然,在Ubuntu上,默认情况下没有安装用于.NET的VB编译器,就像C#一样。只需运行'sudo apt-get install mono-vbnc'来安装它。 - Evan Plaice
您可以在MonoDevelop中打开Visual Studio VB.net/C#项目,它可以成功编译和运行,甚至GUI窗体也可以工作。如果可能的话,我建议您使用Visual Studio来启动它,特别是当您在处理MS Windows窗体应用程序时。Mono目前还没有一个简单的“设计模式”来设计这些窗体。(尚未实现?) - NoBugs
@NoBugs Mono可以处理Winforms GUI吗?我一直以为他们只会坚持使用GTK#。我想现在是更新这个答案的时候了。 - Evan Plaice
是的,我在Mono中运行了两个Windows-VS项目,没有遇到任何问题。不过我认为你可能需要在Monodevelop中添加一个导入?大多数Linux C#应用程序可能使用本地GTK。 - NoBugs
目前似乎无法在Monodevelop中编写任何VB .NET程序(至少在Linux下)。当您创建新的解决方案时,即使是最简单的默认控制台应用程序,也无法加载此类项目(“项目不支持框架”)。手动更改框架为4.0也没有帮助。我在BugZilla(https://bugzilla.xamarin.com/show_bug.cgi?id=38508)上报告了这个问题,并且我可以看到在Mac下也存在框架问题(https://forums.xamarin.com/discussion/28329/error-while-trying-to-load-empty-vb-net-project)。 - matandked

这真的取决于你的课程安排。

Mono确实支持VB.NET语言,但框架在某些地方略有不同,我预测你的工作大部分将涉及到.NET框架,而不仅仅是核心语言。可能并不像听起来那么基础(无意冒犯!)

即使工作只是以语言为导向,正如你所说,你也不会得到愚蠢的Visual Studio元项目文件。你可能会遇到打开文件的问题,而且(再次,如你所说)肯定会遇到将文件传递给其他(可能不太熟练)人的问题。

考虑到这一点,并且你仍然希望将Ubuntu作为主要系统,VirtualBox似乎是保持与你的课程兼容性的最佳方式。它比双启动更方便,但需要一台超过平均水平的计算机才能获得良好的体验(尤其是对于像VS.NET这样笨重的软件)。

或者让你的老师学习和教授Python。这是一门更简单、更好的语言。


3+1 对于Virtual Box的赞同 -1 对于Python作为一门编程语言的反对 = 0 - TheLQ
1Python有什么问题吗?它绝对比VB好多了。 - dv3500ea
2哦,Virtual Box加一分(就像Visual Basic一样),Python作为学习语言加一百分。 - Javier Rivera
1Python的语法有些晦涩,依赖缩进来确定执行顺序。在我看来,它比VB更好,但不适合作为学习语言。 - ayan4m1