xamarin.android - MvvmCross教程 - 可移植类库程序集引用错误 - MonoDroid

标签 xamarin.android mvvmcross portable-class-library

我真的很渴望开始使用 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/

相关文章:

.net - 我可以将可移植类库中的类或方法限制为特定平台吗?

xaml - 在 Xamarin.Forms PCL XAML 页面中禁用自动完成

java - 解决许多proguard警告

c# - Xamarin PCL Android 应用程序在 Release模式下突然崩溃

android - MVVMCross fragment 导航在 4.0 中如何工作?

MvvmCross:ShowViewModel 是否总是构造新实例?

c# - 来自可移植类库的 GetEntryAssembly(配置文件 158)

android - 当前上下文中不存在名称资源 Xamarin

c# - 在 Xamarin.forms 中检测到的目标依赖项中的循环

android - MVVMCross 从 MvxBindableListView 获取 SelectedItem