获取/更改MonoTouch Framework版本

时间:2013-12-18 17:45:58

标签: .net xamarin.ios xamarin

经过几个月的发展,我遇到了一个荒谬的问题。我想知道,mt的确切框架版本安装在我的机器上或在项目中引用。如果我输入

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?

2 个答案:

答案 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)是:

  • 便携式net40 + SL4 + WP7 + win8的
  • 便携式net45 + WP80 + win8的

正如您所看到的,此处不包括monotouch。现在的问题是,那些库将引用System.Dynamic.Runtime,它将在设备构建时崩溃,如poupou所解释的那样。

解决方案: 我使用了Xamarin component store中的Json.Net版本。如果您正在安装或更新引用nuget的nugets,则必须在之后删除它们的Json.Net并将其替换为此版本。