是否可以使用mono执行vbproj?

时间:2017-06-14 19:47:11

标签: vb.net macos visual-studio mono

我必须继续使用Visual Studio和框架.NET框架4编写的程序,但问题是:我有一个macbook。

经过多次研究,我发现通过使用Mono,可以使用mac在vb.net中进行编码。但是,该项目正在Windows计算机上工作,但我收到此警告:

"warning MSB3256: No assemblies were read in from the redist lists. A TargetFramework profile exclusion list could not be generated."

并出现此错误:

"error MSB6006: "vbnc.exe" exited with code 1"

所以我猜测他并没有认识到mono应该取代.NET框架。我正在用MSbuild执行代码,也许这就是问题?

2 个答案:

答案 0 :(得分:1)

不幸的是你被困住了。

Microsoft希望通过Visual Studio for Mac将C#/ VB和.NET Core引入Mac,因此您不应再尝试通过Mono将任何.NET Framework项目带到Mac。

这个警告对VB开发人员来说更为关键,因为Mono的VB支持(vbnc.exe是Mono VB编译器)是实验性的,并不支持所有VB的最新功能。

但是,对于.NET Core开发,VB还没有准备好使用,并且应该在Microsoft发布.NET Core 2.0的几个月内可用。

使用.NET Core 2.0预览版

,你绝对可以使用VB

https://www.infoq.com/news/2017/05/netcore2preview

但是你不能使用VS for Mac,并且必须使用Visual Studio Code之类的编辑器。

答案 1 :(得分:1)

由于某种原因,尽管Mono vbnc中内置了基于Roslyn的VB编译器,但Mono默认使用vbc。有趣的是,vbnc甚至没有与mono-devel软件包一起安装,并且默认情况下仍在使用。

如果您安装了vbnc并开始收到此消息:

  

“错误MSB6006:“ vbnc.exe”以代码1退出”

您需要指示Mono使用vbc来代替,您的代码将生成。最可靠的方法是通过在vbproj文件中添加以下XML,为每个项目进行设置:

<PropertyGroup>
    <VbcToolExe>vbc</VbcToolExe>
</PropertyGroup>

代码应放在根<Project>标记内。