编译的单声道缺少默认的 .NET 库 - 未定义或导入 System.Object

本文关键字:未定义 导入 Object System NET 单声道 声道 编译 默认 | 更新日期: 2023-09-27 18:34:56

我按照此处的指南在OS X Mavericks上编译了单声道:http://www.mono-project.com/docs/compiling-mono/mac/

现在,当我使用 xbuild 编译我的应用程序时,我收到以下错误:

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

当我在OS X上使用单声道安装程序时,我从未收到任何这些错误。

(我正在构建单声道,因为我正在向未完成的 .NET 框架添加功能(

运行 autogen.sh 的结果:https://gist.github.com/Geesu/149332f3f877c891d387运行结果:https://gist.github.com/Geesu/4296f7d4c6c368d6986d

编译的单声道缺少默认的 .NET 库 - 未定义或导入 System.Object

如果出现类似于以下内容的警告:

/lib/mono/4.5/Microsoft.Common.targets:  warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v2.0'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior.

您可以在命令行上覆盖 .NET 框架:

xbuild /p:TargetFrameworkVersion="v4.0"

您可以更改解决方案:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

我在 Debian unstable (Sid( 上构建 YouCompleteMe/OmniSharpServer 时遇到了这个问题。 正在发生的事情是安装的 mono 版本没有安装 v4.5.2 框架程序集,这是编译器在生成该解决方案/项目时默认的。

解决方法是将目标框架版本指定为可用的版本,或提供目标框架版本(例如,在自定义编译期间(。

Cat Zimmermann的回应是恰当的。

我把这个问题难倒了。重新运行Mavericks安装程序后,我忘了检查更新,并且有适用于Mono和Xamarin.Android的稳定频道更新。一旦我安装了它们,一切都很好。

安装程序和家庭构建的区别在于,安装程序"知道"库的位置,而编译的安装程序则不知道。因此,除非您在编译应用程序时指向该位置,否则将出现问题(基本上找不到系统 dll(。我建议查看 mcs 文档 ,并指定路径。(编辑:使用"-L"参数应该可以。

当我删除行时,我的项目开始编译

<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>

从它。

我不知道

如何从逻辑上支持这一点,但是在尝试解决此问题几个小时后,

Unload .net standards project

因为我没有得到确切的问题并决定

reload it again

繁荣。。。成功了。。。仍然不知道背后的逻辑原因是什么。如果有人这样做,请在下面评论。

尝试删除该解决方案的所有项目中的 bin 和 obj 文件夹。

似乎这些文件夹包含由某些旧版本的Visual Studio生成的旧文件,这些文件与新版本的Visual Studio不兼容。

我通过将项目设置->常规->目标框架更改为Mono/.NET 4.5来解决此问题。

希望它对你有用。

我遇到了同样的问题。

检查了我的目标框架路径:Properties>Aplication:Target Framework并将其设置为 .Net Framework 4.7