MonoDevelop的:是否有可能切换PCL的编译器?(MonoDevelop: is it po

2019-06-27 04:29发布

我们正在开始一个跨平台的项目部署到Android和iOS。 显然,大量的代码是要在两者之间共享,以及一些代码在很大程度上依赖于.NET框架项,如源码网库做。

最好的办法(据我所知)分享2个项目之间的代码是使用PCL - 这样就可以与溶液中的iOS和Android的项目共享的代码来引用该项目,并拥有一切重新编译和链接不错的方式。

然而,在MonoDevelop中创建的PCL被编译的GMC编译器和一些外部依赖性的失败要建在这种情况下(即,在此情况下使用的框架中没有System.Func<T, TResult>仅提供System.Func<T1, T2, ..., T9, TResult> MonoTouch中的编译器(校董会),反过来,是能完美编译PCL(用二进制的SMC替代的GMC二进制证明)。 从我有点谷歌上搜索后发现,肾小球系膜使用.NET Framework 2.0的,同时校董会使用不便叫2.1框架,这实际上是最近.NETs的板缺混合物。

这里谈到的问题是:是否有可能指定MonoDevelop中同时建设PCL要使用的编译器(如另一项目的依赖)?

Answer 1:

单尚没有实际PCL库的实现。 现在,它有一个虚拟Microsoft.Portable.CSharp.targets文件 ,与其覆盖的框架和目标,以建立对MonoTouch的,单库Android或.NET 4.0,按照这个顺序,根据已安装什么。

它看起来像有缺陷在使用MonoTouch的框架代码路径 - 这是使用默认的共同目标,Microsoft.CSharp.targets,无需重写编译器使用C#编译器的具体MonoTouch的版本。 这是必要的,因为Mono的C#编译器是目前框架特有的(虽然这是固定在单声道2.12,这是在阿尔法)。

您可以通过编辑文件来解决这个/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild/Microsoft/Portable/v4.0/Microsoft.Portable.CSharp.targets ,找到的PropertyGroup是套

<TargetFrameworkIdentifier>MonoTouch</TargetFrameworkIdentifier>

而它,添加行:

<CscToolExe>smcs</CscToolExe>
<CscToolPath>/Developer/MonoTouch/usr/bin</CscToolPath>


Answer 2:

我知道这是一个老问题,但现在看来,加入便携式类库(PCL)支持3.0.x版为单声道,请参阅发行说明有关详细信息,尤其是版本3.0.8 :

加入xbuild,单声道的MSBuild的实现PCL支持。



文章来源: MonoDevelop: is it possible to switch PCL's compiler?