【问题标题】:MonoTouch linker fails to resolve System.Void System.Console::set_ForegroundColor(System.ConsoleColor)MonoTouch 链接器无法解析 System.Void System.Console::set_ForegroundColor(System.ConsoleColor)
【发布时间】:2012-02-20 06:22:04
【问题描述】:

我的应用可以很好地构建/链接/部署到模拟器,但我只是第一次尝试将应用构建/部署到真实设备,但链接器失败。

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

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

编译为本机代码 /Developer/MonoTouch/usr/bin/mtouch -sdkroot "/开发者" -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" "/Users/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 进入 /Users/ogazitt/zaplify/bin/iPhone/Debug/iphone.app 错误 MT2002:可以 不解决参考:System.Void System.Console::set_ForegroundColor(System.ConsoleColor)

【问题讨论】:

    标签: ios xamarin.ios monodevelop jit aot


    【解决方案1】:

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

    这在模拟器下工作,因为在这种情况下使用 JIT(即时)编译器(更快的构建),如果执行永远不会到达 ConsoleColor 代码,那么您将永远不会看到 MonoTouch 的 @ 缺少它987654324@.

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

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

    【讨论】:

    • 谢谢(再次)塞巴斯蒂安!通过在程序集浏览器中检查我的依赖项,我意识到我的一个依赖项(SharpCompress)对 System、System.Core 和 mscorlib 有未解决的引用;当我删除依赖项时,问题就消失了。我想我的问题是 - 为了使 .NET 程序集与 AOT 编译器一起正常工作,它是否总是需要针对 MT 程序集引用进行编译?
    • 总是(理论上)但足够接近 100%(在实践中)说 总是重新编译是 b> 解决方案:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多