C#中被迫使用两个不同版本System.Data.Common的问题求解
解决Hololens UWP与移植类库的System.Data.Common版本冲突问题
我来帮你搞定这个Hololens UWP项目和移植类库的版本冲突问题,这类依赖版本的坑我之前做UWP开发时也踩过,给你几个实用的解决方案:
方案一:强制统一所有项目的依赖版本
打开你的UWP项目的.csproj文件,在<PropertyGroup>节点之后添加如下配置,强制指定System.Data.Common的版本为4.2.0.0,让所有依赖都对齐这个版本:
<ItemGroup> <PackageReference Include="System.Data.Common" Version="4.2.0.0" PrivateAssets="All" /> </ItemGroup>
同时,打开你移植的.NET Core 2.0类库的.csproj文件,确保里面引用的System.Data.Common也是同一个版本。之后清理解决方案,删除所有bin和obj文件夹,重新还原NuGet包并重建,这样NuGet会统一管理所有依赖的版本。
方案二:将类库迁移到.NET Standard 2.0
HoloLens的UWP项目对.NET Standard的兼容性比.NET Core 2.0更好,你可以把移植的类库切换到.NET Standard 2.0(和.NET Core 2.0的API大部分兼容,迁移成本很低):
- 右键类库项目 → 属性 → 目标框架 → 选择
.NET Standard 2.0 - 重新还原NuGet包,确保所有依赖都是针对.NET Standard的版本
这样类库的依赖会更贴合UWP的运行环境,能从根源上减少版本冲突的概率。
方案三:启用UWP的自动绑定重定向
UWP项目默认不启用绑定重定向,但可以通过修改项目文件开启这个功能,让VS自动处理版本映射:
打开UWP项目的.csproj文件,在<PropertyGroup>中添加:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
之后清理并重建解决方案,VS会自动生成合适的绑定规则,把高版本的System.Data.Common映射到UWP支持的版本,或者反过来,解决版本不匹配的问题。
方案四:检查类库的手动引用
有时候类库可能直接引用了本地的System.Data.Common DLL文件,而不是通过NuGet管理。你可以:
- 打开类库项目的引用列表,移除手动添加的
System.Data.Common引用 - 通过NuGet安装对应版本的
System.Data.Common,确保和UWP项目的版本一致
额外注意事项
- 一定要清理解决方案并删除
bin、obj文件夹后再重建,很多缓存导致的版本问题都能这样解决 - 确保你的HoloLens UWP项目的目标Windows版本至少是Windows 10 Fall Creators Update (1709),旧版本的UWP对.NET生态的依赖支持不够完善
内容的提问来源于stack exchange,提问作者KillerKoala
相关产品推荐
相关产品推荐

