VS2017中Xamarin跨平台UWP应用加载System.Threading.Thread失败求助
针对Xamarin UWP项目中System.Threading.Thread程序集找不到的问题排查
我之前帮开发者处理过类似的UWP+Xamarin兼容性问题,结合你给出的错误信息和调用栈(涉及SQL数据库连接),整理几个最可能的原因和解决方向:
可能的原因及解决方法
1. UWP项目未正确引用System.Threading.Thread程序集
UWP的API集合和传统.NET Framework有差异,部分基础程序集不会默认添加到项目中。你可以:
- 右键UWP项目 → 管理NuGet程序包,搜索
System.Threading.Thread,安装与你的项目.NET Standard版本匹配的包(优先选4.0.0.x系列的兼容版本)。 - 检查UWP项目的目标版本,建议设置为Windows 10 Fall Creators Update(16299)或更高版本,这些版本对.NET Standard程序集的支持更完善。
2. .NET Standard数据层与UWP的兼容性冲突
你的数据访问逻辑(比如SS12.DataServices)大概率在.NET Standard项目中,而UWP对部分.NET Framework专属API的支持有限:
- 确认你的.NET Standard项目版本为2.0及以上(VS2017最高支持.NET Standard 2.0),这个版本的跨平台兼容性更好。
- 替换旧版SQL客户端依赖:如果使用的是
System.Data.SqlClient,建议换成Microsoft.Data.SqlClient的NuGet包——这是微软针对现代.NET平台(包括UWP)维护的版本,能避免很多兼容性问题。
3. 程序集绑定重定向配置缺失
UWP项目的绑定重定向逻辑和传统.NET项目不同,若存在版本冲突,需要手动配置:
在UWP项目的App.config文件中添加以下配置段(如果没有App.config就新建一个):
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Threading.Thread" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
4. VS2017工具链的缓存或版本问题
VS2017的Xamarin和UWP支持相对老旧,可能存在工具链bug:
- 将VS2017更新到最新补丁版本:打开工具 → 获取工具和功能,检查并安装所有可用更新。
- 清理并重建项目:执行生成 → 清理解决方案,手动删除项目的
bin和obj文件夹,然后重新生成整个解决方案。 - 重置VS组件缓存:删除
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0\ComponentModelCache文件夹,重启VS后再尝试编译运行。
内容的提问来源于stack exchange,提问作者Dave Martin
相关产品推荐
相关产品推荐

