c# - 无法加载文件或程序集“System.Private.CoreLib...”
问题描述
我有一个针对 .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,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。文件名:System.ModuleHandle.ResolveType(RuntimeModule 模块,Int32 typeToken,IntPtr* typeInstArgs,Int32 typeInstCount,IntPtr* methodInstArgs,Int32 methodInstCount , ObjectHandleOnStack 类型) 在 System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule 模块, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) 在 System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments,
任何想法这可能意味着什么,以及如何解决它?
解决方案
鉴于您的包同时具有 UWP 和桌面组件,您将需要使用 VS 打包项目来创建 .appxupload 文件以进行商店提交。
有关更多信息/示例,请查看此处:
https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/
应用商店不再接受包含未使用正确打包项目创建的混合 UWP 和桌面 .NET 二进制文件的包。这是为了确保 UWP 二进制文件在云中获得正确的 .NET 本机编译(这不适用于桌面 .NET 二进制文件)。在您的情况下,发生的事情是商店中跳过了 .NET 本机编译,导致包无效,因为声明的依赖项与包的内容不匹配。我们应该在这里改进我们的错误检测,以便我们在提交时通知您您的包不好,需要更多的工作。
如果你的 Win32 EXE 不是在 VS 中构建的,而你只是想在你的 UWP 项目中包含二进制文件,你仍然应该使用 Packaging 项目。确保将 Win32 EXE 放入包的子文件夹中。有关此类项目结构,请参见下面的屏幕截图。
推荐阅读
- swift - 在 UserDefault 问题中保存自定义字典
- java - 地图
> 可能不包含字符串类型的值 - python - 在 Python 中将元组列表导出到 csv
- javascript - 路由拆分成多个文件时,Route Component 多次渲染
- css - 如何让动态内容居中且宽度相同的孩子与flex?
- angular - 如何将角度模态附加到按钮单击
- python - 逐个单元格地比较两个数据帧的完整矩阵
- javascript - React Router 警告 Render 方法应该是 props 和 state 的纯函数
- javascript - 解构并返回多个值
- python - 如何解决 AttributeError: 'list' object has no attribute 'lower in scipy minimize