MonoTouch链接器无法解析System.Void System.Console :: set_ForegroundColor(System.ConsoleColor)

时间:2012-02-19 22:05:52

标签: ios xamarin.ios monodevelop jit aot

我的应用程序构建/链接/部署到模拟器很好,但我只是第一次尝试将应用程序构建/部署到真实设备,并且我收到链接器故障。

我在我的应用中的任何地方都没有使用System.ConsoleConsoleColor,但我确实有相当数量的代码使用UIColor,我想知道这里是否有一些MT依赖。

我正在使用最新的东西--MonoDevelop 2.8.6.5和MonoTouch 5.2.5。

  

编译为本机代码/ Developer / MonoTouch / usr / bin / mtouch -sdkroot   “/ Developer”-v --nomanifest --nosign -dev   “/Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app”-r   “/Users/ogazitt/zaplify/bin/iPhone/Debug/BuiltSteady.Zaplify.Devices.ClientEntities.dll”   -r“/Users/ogazitt/zaplify/bin/iPhone/Debug/Utilities.dll”-r“/Users/ogazitt/zaplify/bin/iPhone/Debug/BuiltSteady.Zaplify.Devices.ClientViewModels.dll”   -r“/Developer/MonoTouch/usr/lib/mono/2.1/System.dll”-r“/Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll”-r   “/Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll”-r   “/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll”-r   “/Developer/MonoTouch/usr/lib/mono/2.1/MonoTouch.Dialog-1.dll”-debug   -profiling -linksdkonly -sdk“5.0”“/用户/ ogazitt / zaplify/bin/iPhone/Debug/zaplifyiphone.exe”MonoTouch   版本5.2.5使用框架:   /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk   复制/Users/ogazitt/zaplify/bin/iPhone/Debug/zaplifyiphone.exe到   /Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app/zaplifyiphone.exe   复制/Users/ogazitt/zaplify/bin/iPhone/Debug/SharpCompress.3.5.dll   至   /Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app/SharpCompress.3.5.dll   复制   /Users/ogazitt/zaplify/bin/iPhone/Debug/Newtonsoft.Json.MonoTouch.dll   至   /Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app/Newtonsoft.Json.MonoTouch.dll   仅将SDK链接到程序集   /Users/ogazitt/zaplify/bin/iPhone/Debug/zaplifyiphone.exe into   /Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app错误MT2002:可以   不解析引用:System.Void   System.Console :: set_ForegroundColor(System.ConsoleColor)

1 个答案:

答案 0 :(得分:5)

这很可能是您的一个程序集依赖项包含对System.Console.ForegroundColor属性和System.ConsoleColor类型的引用。

这在模拟器下工作,因为在这种情况下使用JIT(及时)编译器(更快的构建),如果执行从未到达ConsoleColor代码,那么你永远不会看到它从MonoTouch的mscorlib.dll

然而,当您为设备构建时,MonoTouch需要使用AOT(提前)编译器(因为Apple在iOS设备上允许JIT')。这意味着所有内容(即使您不会在执行时使用它)也需要编译为本机代码。任何遗漏的内容,例如ConsoleColor,都会导致错误。

如果您不确定哪个程序集具有引用,只需打开错误报告,请附加每个.dll和.exe(您可以将附件标记为私有),我们将帮助您识别集会。