cat /Developer/MonoTouch/Version
在MAC终端上,它会看到
7.0.4.209
如果我查看
的结果var version = Assembly.GetExecutingAssembly().ImageRuntimeVersion;
在我的项目中我会得到
v2.0.50727
这是与我的一些lib相同的版本(例如System.Core)。
但是不是更新的mt-Framework可用吗?我甚至试图在我的Mac上重新安装MT,但它声称一切都是最新的。
背景:我遇到的问题与this thread中使用JSON.NET结合PCL和Nuget所描述的问题相同。那里的答案表明,这些问题应该随着mt3而消失。那么如何切换到版本3?
答案 0 :(得分:4)
但是不是更新的mt-Framework?
没有。
我甚至尝试在我的Mac上重新安装MT,但它声称一切都是最新的。
这是最新的。 7.0.4是此日期(2013年12月18日)的最新稳定版本。
现在你要混合几件事:
单声道版
Xamarin.iOS 6.2及更早版本(低至4.0)使用Mono 2.10。 Xamarin.iOS 6.4(及更高版本)使用Mono 3.0(或3.2)。这就是thread所指的“3”。
Xamarin.iOS版本
XI的版本在运行时可以使用:
string version = MonoTouch.Constants.Version;
这会给你类似的东西:"7.0.4"
(最新稳定版)。
CLR版本
使用ImageRuntimeVersion
公共语言运行库(CLR)所需的版本来执行程序集。这在仅限iOS的环境中并不重要。
汇编版
您可以获得程序集的版本但又不会对您有所帮助(因为它是程序集strongname的一部分,并且它们不会更新以保持兼容性)。
<强> PCL 强>
完整的PCL支持为very recen,您需要最新的Mono(不仅仅是Xamarin.iOS)版本才能使其正常运行。
答案 1 :(得分:0)
感谢poupou的出色回答。在我的情况下,这并没有解决问题,我每次尝试为iOS设备构建时都获得了MT2002。经过几个小时的努力,我得到了它的工作。
我认为,Json.Net没有将正确的子集带入PCL。它们将被安装,但它们带来的唯一符合PCL的设置(当前版本为5.0.8)是:
正如您所看到的,此处不包括monotouch。现在的问题是,那些库将引用System.Dynamic.Runtime,它将在设备构建时崩溃,如poupou所解释的那样。
解决方案: 我使用了Xamarin component store中的Json.Net版本。如果您正在安装或更新引用nuget的nugets,则必须在之后删除它们的Json.Net并将其替换为此版本。