【发布时间】:2020-02-04 07:38:20
【问题描述】:
我正在尝试在 Xamarin Forms 项目中安装以下 NuGet(而不是在 Xamarin.Android 项目中)
- Xamarin.Android.Support.core.Utiles
- Xamarin.Android.Support.Animated.Vector.Drawable
我想在没有平台特定条件的情况下访问我的 Xamarin 项目类中的 MediaProjectionManager。请帮我解决这个问题。
现在每当我尝试在 Xamarin Forms 项目中安装与 android 相关的 NuGet 包时,我都会收到以下错误。
Error NU1202 Package Xamarin.Android.Support.Vector.Drawable 28.0.0.3 is not compatible with netstandard2.1 (.NETStandard,Version=v2.1). Package Xamarin.Android.Support.Vector.Drawable 28.0.0.3 supports:
- monoandroid60 (MonoAndroid,Version=v6.0)
- monoandroid70 (MonoAndroid,Version=v7.0)
- monoandroid71 (MonoAndroid,Version=v7.1)
- monoandroid80 (MonoAndroid,Version=v8.0)
- monoandroid81 (MonoAndroid,Version=v8.1)
- monoandroid90 (MonoAndroid,Version=v9.0)
Error Package restore failed. Rolling back package changes for .
如果我在 Xamarin 项目的 cs 文件中编写以下代码,并且如果我尝试从 Xamarin.Android 项目的 MainActivity.cs 文件访问以下对象,则会出现以下错误。
MediaProjection 对象在 XamarinFile 中不可用。它无法访问任何与 android 相关的函数或对象。
#if __ANDROID__
public MediaProjection MediaProjection { get; set; }
#endif
XamarinFile.Instance.MediaProjection = manager.GetMediaProjection((int)resultCode, data);
【问题讨论】:
-
这是一个 Android 特定的库。不能在常用的 Forms 项目中安装。
-
@Jason 谢谢你的评论。我编辑了我的问题。我无法从 Xamarin.Android 项目中的 MainActivity.cs 文件访问用 Xamarin.Forms 编写的任何 android 相关对象
-
我不知道您要做什么,但我几乎可以肯定您的做法是错误的。我相信我在之前的问题中已经告诉过您,在 .NET Standard 项目中使用 #if 是行不通的。我建议您写一个新问题来解释您要完成的工作,并询问实现它的正确方法。
-
实现平台相关代码的最常见方式是通过 DI,docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… 这就是为什么您不应该将任何 iOS 或 Android 特定包添加到 .NET Standard 项目的原因。
-
“条件编译最适合共享资产项目”。您使用的不是 SAP,而是 .NET 标准库。
标签: xamarin xamarin.forms xamarin.android