1

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

我没有在我的应用程序中使用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" "/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。应用程序错误 MT2002:无法解析参考:System.Void System.Console::set_ForegroundColor(System.ConsoleColor)

4

1 回答 1

5

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

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

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

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

于 2012-02-19T22:21:19.330 回答