我有一个针对.net标准1.4的Xamarin.Forms应用程序。在具有最低版本14393(和目标16299)的UWP应用程序上,我从Microsoft Store获得以下异常(尽管在我的计算机上它甚至可以从appxbundle
文件运行良好):
请注意要点:
Xamarin.Forms.Forms.Init(e);
中的OnLaunched
发生错误。Could not load file or assembly 'System.Private.CoreLib...'
。System.IO.FileNotFoundException:无法加载文件或程序集 'System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该 系统找不到指定的文件。文件名: 'System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral, 公钥= b03f5f7f11d50a3a” 在System.ModuleHandle.ResolveType(RuntimeModule模块,Int32 typeToken,IntPtr * typeInstArgs,Int32 typeInstCount,IntPtr * methodInstArgs,Int32 methodInstCount,ObjectHandleOnStack type) 在System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule模块,Int32 typeToken,RuntimeTypeHandle [] typeInstantiationContext, RuntimeTypeHandle [] methodInstantiationContext) 在System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken,Type [] genericTypeArguments,Type [] genericMethodArguments) 在System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord) caRecord,MetadataImport范围,汇编& lastAptcaOkAssembly, RuntimeModule decoratedModule,MetadataToken decoratedToken, RuntimeType attributeFilterType,Boolean mustBeInheritable,Object [] 属性,IList derivedAttributes,RuntimeType& attributeType,IRuntimeMethodInfo& ctor,布尔& ctorHasParameters,Boolean& isVarArg) 在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule,Int32 decoratedMetadataToken,Int32 pcaCount, RuntimeType attributeFilterType,Boolean mustBeInheritable,IList derivedAttributes,Boolean isDecoratedTargetSecurityTransparent) 在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly,RuntimeType caType) 在System.Reflection.RuntimeAssembly.GetCustomAttributes(Type attributeType,布尔继承) 在System.Attribute.GetCustomAttributes(Assembly元素,Type attributeType,布尔继承) 在Xamarin.Forms.Internals.Registrar.RegisterAll(Type [] attrTypes) 在Xamarin.Forms.Forms.Init(IActivatedEventArgs launchActivatedEventArgs,IEnumerable`1 rendererAssemblies) 在PasswordManager.UWP.App.d__1.MoveNext()
任何想法可能意味着什么,以及如何解决它?
答案 0 :(得分:6)
鉴于您的软件包同时具有UWP和桌面组件,您需要使用VS Packaging Project为商店提交创建.appxupload文件。
有关更多信息/示例,请查看此处:
https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/
商店不再接受包含未使用正确包装项目创建的混合UWP和Desktop .NET二进制文件的软件包。这是为了确保UWP二进制文件在云中获得正确的.NET本机编译(这不适用于Desktop .NET二进制文件)。在您的情况下,发生的事情是在Store中跳过了.NET本机编译,导致无效的包,因为声明的依赖项与包的内容不匹配。我们应该在这里改进我们的错误检测,以便我们在提交时通知您包裹不好并且需要更多工作。
如果您的Win32 EXE不是在VS中构建的,并且您只想在UWP项目中包含二进制文件,那么您仍应使用Packaging项目。确保Win32 EXE被放入包的子文件夹中。有关此类项目结构,请参阅下面的屏幕截图。
答案 1 :(得分:0)
当我遇到此问题时,解决起来非常简单-避免序列化通用集合。在序列化之前,最好使用ToArray()将您的集合转换为类型化的数组。