使用mono/xbuild编译VS2015应用程序出现问题

4

我虽然对Linux不陌生,但是对编程还是新手。最近我开始学习C#编程课,并且我们使用Visual Studio 2015来编写应用程序,因此使用MSbuild来编译它们。然而,在家里我想使用mono进行编译,但是当我尝试时,我遇到了很多错误,它拒绝进行编译。 这是我运行的程序:

$ xbuild Dice_Game.sln

这是标准错误输出(stderr):

Errors:

/home/dj/programs/c#_programs/Dice_Game/Dice_Game.sln (default targets)  ->
(Build target) ->
/home/dj/programs/c#_programs/Dice_Game/Dice_Game.csproj (default     targets) ->
/usr/local/lib/mono/xbuild/12.0/bin/Microsoft.CSharp.targets     (CoreCompile target) ->

CSC: error CS0518: The predefined type `System.Object' is not defined or imported
CSC: error CS0518: The predefined type `System.ValueType' is not defined or imported
CSC: error CS0518: The predefined type `System.Attribute' is not defined or imported
CSC: error CS0518: The predefined type `System.Int32' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt32' is not defined or imported
CSC: error CS0518: The predefined type `System.Int64' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt64' is not defined or imported
CSC: error CS0518: The predefined type `System.Single' is not defined or imported
CSC: error CS0518: The predefined type `System.Double' is not defined or imported
CSC: error CS0518: The predefined type `System.Char' is not defined or imported
CSC: error CS0518: The predefined type `System.Int16' is not defined or imported
CSC: error CS0518: The predefined type `System.Decimal' is not defined or imported
CSC: error CS0518: The predefined type `System.Boolean' is not defined or imported
CSC: error CS0518: The predefined type `System.SByte' is not defined or imported
CSC: error CS0518: The predefined type `System.Byte' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt16' is not defined or imported
CSC: error CS0518: The predefined type `System.String' is not defined or imported
CSC: error CS0518: The predefined type `System.Enum' is not defined or imported
CSC: error CS0518: The predefined type `System.Delegate' is not defined or imported
CSC: error CS0518: The predefined type `System.MulticastDelegate' is not defined or imported
CSC: error CS0518: The predefined type `System.Void' is not defined or imported
CSC: error CS0518: The predefined type `System.Array' is not defined or imported
CSC: error CS0518: The predefined type `System.Type' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerator' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerable' is not defined or imported
CSC: error CS0518: The predefined type `System.IDisposable' is not defined or imported
CSC: error CS0518: The predefined type `System.IntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.UIntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeFieldHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeTypeHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.Exception' is not defined or imported

 4 Warning(s)
 31 Error(s)

Time Elapsed 00:00:01.2374970

看起来我可以使它工作... 只是我对Mono的经验不足以使其工作。欢迎任何帮助。

3个回答

3
请将您的项目目标框架更改为.NET 4.5。
目前,Mono不支持.NET 4.5.1及以上版本。

0

这个问题让我抓狂了。有很多种安装Mono的方法,但有些会安装过时的版本。我记得曾经按照一些VS Code和Omnisharp的指令进行安装。

因此,为了获得最新的安装版本,请按照Mono下载页面上的说明设置apt源,然后执行以下操作:

sudo apt install --reinstall mono-complete
sudo apt upgrade

xbuild 开始工作,但表示它已经过时了,请使用 msbuild


六年后,在 Fedora 上,努力实现另一半的目标。 - undefined
最终通过使用xbuild /p:TargetFrameworkVersion="v4.0"来强制指定目标框架。 - undefined

0
在我的Ubuntu Bionic设置中,这个问题通过安装mono-reference-assemblies-*软件包得到了解决。 (由于某种原因,它们没有与mono-devel一起安装)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接