2

我真的很想开始使用 MvvmCross - 它看起来是一个非常有前途的跨平台解决方案框架。无论如何,我在阅读教程时遇到了构建错误,https://github.com/slodge/MvvmCross/wiki/Tutorial-Part-1。在构建 Android 项目组件时出现错误。这是错误:

错误 1 ​​类型“Android.App.Activity”在未引用的程序集中定义。您必须添加对程序集“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

我看到发布了一些类似的问题(MonoTouch/MonoDroid 中的 Portable Class Library strong assembly reference questions),并遵循了建议的解决方案,但没有成功。这是在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 用于此参考。

任何帮助将不胜感激。

4

1 回答 1

2

您的问题与 PCL 无关。从 4.2 版开始,Android 程序集的 Mono 是强名称,即 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

不是强名称。

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

那应该可以解决您的问题。

于 2013-03-25T03:15:58.977 回答