我真的很渴望开始使用 MvvmCross - 它看起来是一个非常有前途的跨平台解决方案框架。不管怎样,我在学习教程时遇到了构建错误,https://github.com/slodge/MvvmCross/wiki/Tutorial-Part-1 。构建 Android 项目组件时出现错误。这是错误:
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。
任何帮助将不胜感激。
最佳答案
您的问题与 PCL 无关。从版本 4.2 开始,Mono for Android 程序集具有强名称,即 Xamarin 提供的程序集将使用 Xamarin key 进行签名。早些时候,程序集要么没有签名,要么只是延迟签名。此更改会影响某些 Xamarin 程序集的强名称。
就像您的情况一样,它要求您添加引用:
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=c4c4237547e4b6cd
这是强名称。目前您将使用:
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
这不是强名称。
因此,您需要做的就是重新构建所有使用新的强名称程序集引用 Mono.Android 的程序集(在 MVVMCross 以及您可能拥有的任何其他项目中)。
这应该可以解决您的问题。
关于xamarin.android - MvvmCross教程 - 可移植类库程序集引用错误 - MonoDroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606270/