2013-03-25 37 views
2

我真的很想开始使用MvvmCross - 它看起来像是一个非常有前途的跨平台解决方案框架。无论如何,由于我正在浏览教程https://github.com/slodge/MvvmCross/wiki/Tutorial-Part-1,因此我有一个构建错误。构建Android项目组件时出现错误。这是错误:MvvmCross教程 - 可移植类库的程序集引用错误 - MonoDroid

Error 1 The type 'Android.App.Activity' is defined in an assembly that is not referenced. You must add a reference to assembly 'Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=c4c4237547e4b6cd'. C:\Users\Steven\documents\visual studio 2010\Projects\Tutorial\Tutorial.UI.Droid\Views\MainMenuView.cs

我看到贴(Portable Class Library strong assembly reference problems in MonoTouch/MonoDroid)一些类似的问题,并遵循建议的解决方案,但没有成功。这是在VS2012,所以我在VS2010中尝试过,并遇到同样的问题。有没有人遇到过这个错误? PCL部分(Tutorial.Core)可以自行构建。我检查了PCL csproj文件,看到它使用Profile 104,并且我已经创建了位于该目录中的MonoAndroid xml文件:

C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETPortable \ v4.0 \ Profile \ Profile104 \ SupportedFrameworks \ MonoAndroid,Version = v1.6 + .xml

Tutorial.UI.Droid项目中对Mono.Android的引用似乎没有问题。 dll的路径是C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ MonoAndroid \ v2.2 \ Mono.Android.dll和VS报告Resolved = True和Strong Name = True用于此引用。

任何帮助将不胜感激。

回答

2

你的问题与PCL无关。从4.2版开始,Mono for Android程序集是强名称的,即由Xamarin发运的程序集将使用Xamarin密钥进行签名。此前,这些集会要么没有签名,要么只有延迟签名。此更改会影响某些Xamarin程序集的强名称。

像你的情况,它要求你添加引用:

Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=c4c4237547e4b6cd 

这是强命名。目前你会使用:

Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 

这是强命名。

所以你所需要做的就是重新构建所有你的程序集(在MVVMCross以及任何其他你可能拥有的项目中),这些程序集引用Mono.Android和新的强名称程序集。

这应该解决您的问题。

+0

在http://slodge.blogspot.co.uk/p/mvvmcross-binaries_7.html – Stuart 2013-03-25 08:12:12

+0

的'实验'版本中有一些Xam2.0编译的Mvx Droid程序集。感谢MiHiR!你是对的钱。并感谢Stuart指出新编译的程序集。 – steven6174 2013-03-25 09:40:22

+0

steven ...如果你在一个新的项目,然后考虑使用v3 ...将在周三 – Stuart 2013-03-25 12:46:37

相关问题