2013-12-18 53 views
0

经过几个月的发展,我陷入了一个嘲笑问题。我想知道,mt在我的机器上安装了什么确切的框架版本,或者是在项目中引用。如果我在Mac终端上键入获取/更改MonoTouch框架版本

cat /Developer/MonoTouch/Version 

,它会看到

7.0.4.209 

如果我考虑的

var version = Assembly.GetExecutingAssembly().ImageRuntimeVersion; 
在我的项目

结果我会得到

v2.0.50727 

这是我的一些库(for e xample System.Core)。

但不是一个新的mt-Framework可用?我甚至试图在我的Mac上重新安装MT,但它声称一切都是最新的。

背景:我遇到了与使用JSON.NET和PCL和Nuget一起在this thread中描述的相同的问题。那里的答案指出,这些问题应该随着mt3而消失。那么我怎样才能切换到版本3?

回答

4

但是不是一个新的mt-Framework可用吗?

号我甚至试图重新安装MT在我的Mac,但它声称这一切都是最新的。

它是最新的。 7.0.4是此日期的最新稳定版本(2013年12月18日)。

现在你混合几件事情:

单声道版本

Xamarin.iOS 6.2版本及更早版本(低至4.0),使用单声道2.10。 Xamarin.iOS 6.4(及更高版本)使用Mono 3.0(或3.2)。这就是“3”thread所指的。

Xamarin.iOS版本

XI的版本,在运行时,使用:

string version = MonoTouch.Constants.Version; 

,并且会给你这样的:"7.0.4"(最新的稳定版本)。

CLR版本

使用ImageRuntimeVersion版本的公共语言运行库(CLR)需要执行组件。这在iOS仅有的情况下并不重要。

大会版本

你可以得到的组件的版本,但同样不会帮助你多少(因为它是组装强名称的一部分,他们将不会被更新,以保持兼容性)。

PCL

完全PCL支持very recen吨,你需要最新的单声道(不仅Xamarin.iOS)的版本有它正常工作。

+0

非常感谢您的支持。所以我明白,我必须自己照顾最新的Mono。是否有某种形式的自动更新shell或我必须手动下载? – sprinter252

+1

@ sprinter252 Mono是X.iOS安装程序的一部分。您不需要手动安装任何其他设备。 – Krumelur

+1

**初始**安装程序将安装您需要的一切(以及最新版本的软件)。但是,在更新时,即使UI *鼓励*您不这样做,混合版本(或仅更新某些软件)也是可能的。 – poupou

0

感谢poupou的出色答案。在我的情况下,这并没有解决问题,我每次尝试构建iOS设备时都会收到MT2002。最后经过几个小时的尝试,我得到了它的工作。

我记下了,Json.Net没有将正确的子集引入PCL。它们将被安装,但只有兼容PCL集他们带来的(当前版本是5.0.8)是:

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

正如你所看到的,monotouch不包括在这里。现在的问题是,这些库将引用System.Dynamic.Runtime,这将在poupou解释的Device-build上崩溃。

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