Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms Can';t解决Xamarin表单组件中的平台效应_Xamarin.forms - Fatal编程技术网

Xamarin.forms Can';t解决Xamarin表单组件中的平台效应

Xamarin.forms Can';t解决Xamarin表单组件中的平台效应,xamarin.forms,Xamarin.forms,我对Xamarin形式的平台效果有问题。这些效果以共享库格式工作,我们现在正迁移到.NET标准2.0,原因超出了本文的范围 项目设置 VS 2017 15.8.0 Xamarin表格3.1.0.697729 两个.Net标准2.0项目(一个用于组件,另一个用于主UI) 两个Android项目(一个运行,另一个是Android.dll) 两个iOS项目(同一笔交易) 主要问题 Android.dll中的所有平台效果都不起作用。它们都解析为无效效果 根据文档,我的设置是正确的。(文件) 我发现了

我对Xamarin形式的平台效果有问题。这些效果以共享库格式工作,我们现在正迁移到.NET标准2.0,原因超出了本文的范围

项目设置

  • VS 2017 15.8.0
  • Xamarin表格3.1.0.697729
  • 两个.Net标准2.0项目(一个用于组件,另一个用于主UI)
  • 两个Android项目(一个运行,另一个是Android.dll)
  • 两个iOS项目(同一笔交易)
主要问题 Android.dll中的所有平台效果都不起作用。它们都解析为无效效果

根据文档,我的设置是正确的。(文件)

我发现了两个不同的问题,遇到了麻烦

  • 当我严格按照说明将[assembly:ResolutionGroupName(“MyGroupName”)]放在平台渲染器本身上时,Xamarin的依赖项解析器会出现异常。这里没有消息,只有一个异常和堆栈跟踪,可以返回RoutingEffect的构造函数
  • 当我使用稍有不同的模式并将其注册到.NET标准2.0项目中一个空文件的命名空间中时,所有效果都返回为null效果
  • 我一直在谷歌上搜索和挖掘论坛,但都没有用。有人知道问题出在哪里吗

    旁注:所有自定义渲染器都在使用static Init()技巧后工作,但效果除外。我还尝试使typeof()语句同时引用该类的Android版本和.NET标准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
        {
          …
        }
    }
    
    Android:

    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提出了一个问题,最终让我走上了正确的道路。我将在这里链接到它,并发布修复它的方法

    链接:

    以下是该帖子的决议:

    简言之,我必须做以下几件事才能使这个功能正常 (现在是):

  • 确保GroupNameResolution标记在应用程序中初始化的第一个效果上
  • 从.Net 2.0项目中删除空文件初始值设定项
  • 利润