如何在Mono.Android中添加引用?

4

我正在使用Xamarin Studio开发一个Android类库。如何在我的库项目中添加对Mono.Android的引用? Mono.Android不在可用程序集列表中。

4个回答

2
假设您已经安装了X.Android软件,请右键单击解决方案。然后选择Add -> Add new Project -> Android -> Android Library Project进行添加新项目。
这里不需要添加任何引用。 enter image description here

谢谢!我最初使用的是普通的类库。我不知道怎么会错过Android库。 - Erik Z

1

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\Mono.Android.dll

对于VS2017,该库可以在上述位置找到。


1
如果你想在库项目中支持不仅仅是Xamarin.Android,你可以使用可移植类库(PCL)。我发现78和158档案很好用,同时都提供了await/async支持。
然而,你应该知道PCL仅支持档案中的目标最小子集。因此,.NET 4.5中并非所有内容都可用,除非你将其抽象化。这可以通过创建接口并使用IoC注入实现来实现。 TinyIoCMvvmCross中的IoC都可以提供IoC。

1
我也发现Jonathan Pepper的服务容器非常简单易用。https://github.com/jonathanpeppers/XPlatUtils/blob/master/XPlatUtils/ServiceContainer.cs 或者获取更多工具 https://github.com/jonathanpeppers/XPlatUtils - Krumelur
更新:现在建议使用.NET标准来完成PCL。 它本质上是一个PCL,但指定了额外的细节,以保证对声明支持给定.NET标准版本的任何设备的跨平台兼容性。 在我撰写本文时,“2.0”是一个不错的目标。将所有可移植代码放入其中一个这些“可移植”库中,包括接口,用于自定义每个平台所需的API。然后,为每个平台创建一个特定于平台的库,该库提供可移植库所需的API。然后,任何设备只需要可移植lib + 设备lib即可。 - ToolmakerSteve
为了处理特定于平台的类型,例如 UI 类型,有各种“包装”特定于平台的类型的技术,因此您的主应用程序代码和可移植库可以传递对象,而无需可移植代码知道特定于平台的类型。在可能的情况下,创建可移植表示形式。例如,使用 Xamarin.Forms.Color,并在需要时使每个平台包含转换器以转换为本机颜色对象。 - ToolmakerSteve

1

如果由于任何原因你的Xamarin Android项目缺少了Mono.Android引用,可以通过在项目的.csproj文件中添加以下行来手动添加:

    <Reference Include="Mono.Android" />

这段内容需要放在第一个“ItemGroup”中。查找<Reference Include="mscorlib" />,并将其放在该行之前(顺序无关紧要,只需在ItemGroup内部,但是按字母顺序排列,因此我将其放在那里)。
在我的情况下,我从旧的Xamarin Android中删除了过时的引用,并且我认为Mono.Android已经过时了,并且在我更新Xamarin Forms时会被重新安装,所以我将其删除了。这是个错误。

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