无法解析 Xamarin 窗体组件中的平台效果



我在 Xamarin 窗体中的平台效果方面遇到问题。 这些效果在共享库格式中工作,由于本文范围之外的原因,我们现在迁移到 .NET Standard 2.0。

项目设置

  • VS 2017 15.8.0
  • Xamarin Forms 3.1.0.697729
  • 两个 .Net 标准 2.0 项目(一个用于组件,另一个用于主 UI(
  • 两个 Android 项目(一个运行,另一个是 Android .dll(
  • 两个 iOS 项目(同一交易(

主要问题我在Android.dll中的平台效果都不起作用。它们都解析为空效果。

根据文档,我的设置是正确的。(文档在这里(

我发现了两个不同的问题,并遇到了一堵砖墙。

  1. 当我完全按照说明进行操作并将 [程序集:ResolutionGroupName("MyGroupName"(] 放在平台呈现器本身上时,Xamarin 的依赖项解析器出现异常。没有消息,只有一个异常和堆栈跟踪,它会导致返回到 RoutingImpact 的构造函数。
  2. 当我使用略有不同的模式并在 .NET Standard 2.0 项目中的空文件的命名空间上注册该模式时,所有效果都返回为 null 效果。

我一直在谷歌搜索和挖掘论坛,但无济于事。 有谁知道可能是什么问题?

旁注:所有自定义渲染器在使用静态 Init(( 技巧后工作,但效果不工作。我还尝试使typeof((语句同时引用该类的Android版本和该类的.NET Standard 2.0版本。

为了完整起见,以下是我要做的。

净标准 2.0:

namespace MyBaseNamespace.Components.Effects
{
public class SearchBarStylingEffect : RoutingEffect
{
public SearchBarStylingEffect() : base("MyGroupName.SearchBarStylingEffect")
{
}
}
}

人造人:

[assembly: ResolutionGroupName("MyGroupName")]
[assembly: ExportEffect(typeof(SearchBarStylingEffect), "SearchBarStylingEffect")]
namespace MyBaseNamespace.Components.Android.Renderers.Effects
{
public class SearchBarStylingEffect : PlatformEffect
{
…
}
}

(iOS 和 Android 一样,只是命名空间不同(

我也在Xamarin的论坛上发布了这个,来自Xamarin的Billy Liu问了一个问题,最终引导我走上了正确的道路。 我将在此处链接到该链接,并发布修复它的内容。

链接: Xamarin Forms Post

这是该帖子的决议:

简而言之,我必须做以下事情才能获得此功能 (现在是(:

  1. 确保组名解析标记位于应用程序中初始化的第一个效果器上。
  2. 从我的 .Net 2.0 项目中删除空文件初始值设定项。
  3. ???
  4. 利润。

最新更新