Xamarin.android Breeze#代表Xamarin.表单(UWP、Droid和iOS)?

Xamarin.android Breeze#代表Xamarin.表单(UWP、Droid和iOS)?,xamarin.android,xamarin.forms,breeze,xamarin.uwp,breeze-sharp,Xamarin.android,Xamarin.forms,Breeze,Xamarin.uwp,Breeze Sharp,在中,Xamarin显示为他们的一个客户端,但我无法安装该包,该包也带有Xamarin标记 它确实安装到PCL项目中,但为了使其正常工作,我需要将其安装到所有平台项目中。当我尝试这样做时,会出现以下错误: iOS/Android: 无法安装程序包“Microsoft.AspNet.WebApi.Client 5.2.3”。您正在尝试将此软件包安装到目标为“Xamarin.iOS,Version=v1.0”的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。有关更多信息,请联系软件包

在中,Xamarin显示为他们的一个客户端,但我无法安装该包,该包也带有Xamarin标记

它确实安装到PCL项目中,但为了使其正常工作,我需要将其安装到所有平台项目中。当我尝试这样做时,会出现以下错误:

iOS/Android:

无法安装程序包“Microsoft.AspNet.WebApi.Client 5.2.3”。您正在尝试将此软件包安装到目标为“Xamarin.iOS,Version=v1.0”的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。有关更多信息,请联系软件包作者

UWP:

软件包Breeze.Sharp 0.6.0.9与uap10.0(UAP,版本=v10.0)/win10-x86-aot不兼容。软件包Breeze.Sharp 0.6.0.9支持:net(.NETFramework,版本=v0.0) 一个或多个程序包与UAP不兼容,版本=v10.0(win10-x86-aot)


我是这样决定的。
1.创建新的可移植类库
2.添加BreezeSharp作为新可移植类库(Nuget)的参考
3.添加新类库作为特定平台项目(Android、iOS)的参考。就我而言,只有Android。
4.在便携式图书馆。创建静态类ex:Configs。
5.Android项目->MainActivity.OnCreate

Configs.ModelAssembly = typeof(Customer).Assembly;
  • 在可移植类库中实现Breeze的数据服务。 例:
  • 公共抽象类BaseDataService,其中T:BaseEntity
    {
    公共静态字符串元数据{get;protected set;}
    公共字符串EntityName{get;protected set;}
    公共字符串EntityResourceName{get;protected set;}
    公共EntityManager EntityManager{get;set;}
    公共字符串DefaultTargetMethod{get;protected set;}
    静态BaseDataService()
    {
    常量=ConstantsFactory.Get;
    尝试
    {
    var metadata=GetMetadata();
    metadata.Wait();
    元数据=Metadata.Result;
    }
    捕获(例外情况除外)
    {
    var b=0;
    }
    }
    public BaseDataService(字符串resourceName,字符串targetMethod=null)
    {
    var modelType=类型(客户);
    Configuration.Instance.ProbeAssemblies(ConstantFactory.BusinessAssembly);
    尝试
    {
    this.EntityName=typeof(T).FullName;
    this.EntityResourceName=资源名称;
    this.DefaultTargetMethod=(string.IsNullOrWhiteSpace(targetMethod)-“GetAll”:targetMethod);
    var dataService=new dataService($“{ConstantsFactory.Get.BreezeHostUrl}{this.EntityResourceName}”,new CustomHttpClient());
    dataService.HasServerMetadata=false;
    var metadataStore=新的metadataStore();
    var namingConvention=namingConvention.CamelCaseProperties;/*元数据存储.namingConvention;*/*namingConvention.Default;*///新的namingConvention()
    namingConvention=namingConvention.WithClientServerNamespaceMapping(
    新字典{“Business.DomainModels”,“DomainModel.Models”}
    );
    metadataStore.NamingConvention=NamingConvention;
    metadataStore.ImportMetadata(元数据,true);
    this.EntityManager=新的EntityManager(数据服务、元数据存储);
    this.EntityManager.MetadataStore.AllowedMetadataMismatchTypes=MetadataMismatchTypes.AllAllowable;
    //将匿名处理程序附加到MetadataMismatch事件
    this.EntityManager.MetadataStore.MetadataMismatch+=(s,e)=>
    {
    //记录不匹配情况
    var message=string.Format(“{0}:Type={1},Property={2},Allow={3}”,
    e、 MetadataMismatchType,e.StructuralTypeName,e.PropertyName,e.Allow);
    //不允许TodoItem实体类型上缺少导航属性
    如果(e.MetadataMismatchType==MetadataMismatchTypes.MissingCLRNavigationProperty&&
    e、 StructureTypeName.StartWith(“TodoItem”))
    {
    e、 允许=假;
    }
    };
    }
    捕获(例外情况除外)
    {
    var b=0;
    }
    }
    公共异步任务GetAll(字符串targetMethod=null)
    {
    var internalTargetMethod=(string.IsNullOrWhiteSpace(targetMethod)?this.DefaultTargetMethod:targetMethod);
    var query=新EntityQuery(internalTargetMethod);
    var qr=wait this.EntityManager.ExecuteQuery(查询);
    var result=qr.ToList();
    返回结果;
    }
    公共作废删除(T实体)
    {
    entity.EntityAspect.Delete();
    }
    私有静态异步任务GetMetadata()
    {
    var client=新的HttpClient();
    var metadata=await client.GetStringAsync(ConstantsFactory.Get.MetadataUrl).ConfigureAwait(false);
    var ret=JsonConvert.DeserializeObject(元数据);
    返回ret.metadata;
    }
    
    }
    在我从Breeze#的发明者IdeaBlade收到的一封电子邮件中,他说虽然Breeze#没有死,但与BreezeJS相比,它淹没的社区注意力要少得多,因此他们更愿意将资源投入JS库


    现在,我只想用@。虽然没有Breeze全面,但部分工作做得很好。

    我尝试了你的方法,结果也一样。因此,我创建了一个参考BreezeSharp的便携式组件。我现在面临的问题是在该共享库中执行Configuration.Instance.probeAssembly,因为我无法访问Type.Assembly属性。更新:我通过汇编解决了我的问题