在MonoDroid和MonoTouch中的便携式类库程序集引用问题

6
我在我的项目中遇到了问题,我在.Net 4.5、Windows Phone 8、WinRT、MonoTouch和MonoDroid中使用PCL。当我尝试构建引用该PCL的MonoDroid或MonoTouch项目时,会出现以下错误:
错误1:类型“System.Object”在未被引用的程序集中定义。您必须添加对程序集“System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用。
错误2:类型“System.Enum”在未被引用的程序集中定义。您必须添加对程序集“System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用。
我已经按照建议执行了命令(sn -Vr*,b03f5f7f11d50a3a),但没有帮助。我正在使用以下配置文件:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78
2个回答

3

如果您将兼容性设置从.NET 4.5更改为.NET 4.0.3,它将起作用。


我正在使用Profile131。(.NET >= 4.0.3,Silverlight >= 4,Windows Phone >= 7.5,Windows Store Apps,XBox),并且它与Xamarin.Android、Xamarin.iOS兼容良好。 - dna

1
当我在104个配置文件中遇到类似错误时,我会构建假的系统程序集,例如System.Windows.dll和System.Net.dll,并将这些程序集的类型转发到相关的类。我延迟签名这些假程序集-幸运的是,MonoDroid和MonoTouch似乎不会过多地检查这些延迟签名。
这些示例可在以下位置找到:https://github.com/slodge/MvvmCross/tree/v3/PortableSupport 我猜您可以使用针对MonoDroid和MonoTouch链接的2个System.Runtime程序集执行相同的操作,并将System.Object和System.Enum进行类型转发。
希望Xamarin的PCL支持很快就能发布-并且将包括这些桥接程序集的官方版本。

我尝试使用Daniel的AsyncFacade项目中的System.Runtime shim,但没有帮助。我还尝试将版本从1.0.0.0更改为4.0.0.0。 - Vagif Abilov
1
@DavKean 发送的推文 - “你试过 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades 下的那些吗?” - Stuart
我现在会尝试。已经回滚了我的更改,所以需要几分钟。 - Vagif Abilov
现在已经尝试过了。对于MonoTouch有效,但对于MonoDroid仍然失败。 - Vagif Abilov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接