本文记录一个 WPF 构建的坑,这是 WPF 仓库的运维管理大意挖的坑。将会在大家使用低版本的 dotnet 6 如 6.0.1 版本时,引用其他人使用高 dotnet 6 版本,如 dotnet 6.0.12 版本构建出来的使用 WPF 的程序集时,将会提示引用存在版本差异从而构建失败。本文将告诉大家如何解决以及原因

这个构建失败提示是因为 WPF 仓库的运维管理大佬,不小心在从 dotnet 6.0.1 更新到 dotnet 6.0.2 时,修改了 WPF 的程序集版本号。这就导致了在使用 dotnet 6.0.2 和以上的 sdk 版本构建出来的引用 WPF 的程序集时,将在构建出来的程序集自动设置要求使用的 WPF 的版本是 6.0.2 版本

如果自己的开发环境或者是构建 CI CD 环境依然是 6.0.1 版本,将会因为 6.0.1 版本的 WPF 的程序集是 6.0.0 版本,低于所引用的程序集声明的 6.0.2 的版本,从而出现提示类似于标识为 xx 的程序集 xx 所使用的“PresentationFramework, Version=6.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的标识为“PresentationFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的程序集“PresentationFramework” 的错误

提示内容大概如下

CSC : error CS1705: 标识为“Lindexi.Lib, Version=1.0.0, Culture=neutral, PublicKeyToken=null”的程序集“Lindexi.Lib”所使用的“PresentationFramework, Version=6.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的标识为“PresentationFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的程序集“PresentationFramework”
CSC : error CS1705: 标识为“Lindexi.Lib, Version=1.0.0, Culture=neutral, PublicKeyToken=null”的程序集“Lindexi.Lib”所使用的“PresentationCore, Version=6.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的标识为“PresentationCore, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的程序集“PresentationCore”
CSC : error CS1705: 标识为“Lindexi.Lib, Version=1.0.0, Culture=neutral, PublicKeyToken=null”的程序集“Lindexi.Lib”所使用的“WindowsBase, Version=6.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的标识为“WindowsBase, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的程序集“WindowsBase”

在 WPF 官方了解到此问题的时候,已经发布了 6.0.2 版本了,于是只能固定 WPF 的程序集版本为 6.0.2 版本,即使后面升级到 6.0.12 版本,也是固定为 6.0.2 版本。这里需要敲黑板的是程序集版本不等于发行版本,不等于运行时或 SDK 版本,只是不同的几条线

修复方法有两个:

  1. 推荐的方法是更新一下自己的 dotnet sdk 版本
  2. 如果是库的开发者,可以尝试在自己的项目的 csproj 上添加以下代码,保持 6.0.0 的 WPF 和 WindowsForms 引用
<FrameworkReference
Update="Microsoft.WindowsDesktop.App;Microsoft.WindowsDesktop.App.WPF;Microsoft.WindowsDesktop.App.WindowsForms"
TargetingPackVersion="6.0.0" />

WPF 修复引用库报错 所使用的 PresentationFramework 6的更多相关文章

  1. webstrom配置一键修复ESLint的报错

    因为项目本身有用eslint,而我这边没用,我这边提交上去别人update后就会提示很多eslint的格式错误提示,所以就在该项目里使用了eslint. 发现一般有两种安装方式,我使用的是webstr ...

  2. Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...

  3. 备库搭建后,进入备库报错psql: FATAL: the database system is starting up

        备库搭建后,进入备库报错psql: FATAL:  the database system is starting up  原因:备库配置文件没有hot_standby = on   mast ...

  4. Python djangorestframework安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python djangorestframework 安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip inst ...

  5. yum install php-gd 安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64 大

    yum install php-gd安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64大概的 ...

  6. 【故障处理】 DBCA建库报错CRS-2566

    [故障处理] DBCA建库报错CRS-2566 PRCR-1071 PRCR-1006 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者, ...

  7. mysql删库报错

    3.开发人员测试环境删库报错 #解决:在数据库的物理目录中(mysql的data目录),进入要删除的数据库目录,查看是否有文件存在,若存在,使用rm -rf 命令清除:再次执行删除数据库命令即可 [r ...

  8. Python3.7安装pyaudio库报错问题及修复

    本人今天在使用python编写语音相关项目是需要引用pyaudio库,结果发现引用失败,刚开始报错内容如下: 说让我升级pip,然后我就按照提示升级了pip,然后又再次尝试安装pyaudio库,然后还 ...

  9. vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...

    http://blog.csdn.net/sophie_u/article/details/76223978 以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但 ...

  10. pycharm 安装第三方库报错:AttributeError: 'module' object has no attribute 'main'

    pip升级到 10.0.1 之后 老版的pycharm 使用pip安装第三方库的时候会报错,报错如上图所示: 其主要原因是 新版的 pip 更改了 部分api 将其中 pip.main() 改为 pi ...

随机推荐

  1. 数字电路之MOS设计

    数字电路之MOS设计 1.MOS的基本性质 MOS,即场效应管,四端器件,S.D.G.B四个端口可以实现开和关的逻辑状态,进而实现基本的逻辑门.NMOS和PMOS具有明显的对偶特性:NMOS高电平打开 ...

  2. KingbaseES 原生XML系列二 -- XML数据操作函数

    KingbaseES 原生XML系列二--XML数据操作函数(DELETEXML,APPENDCHILDXML,INSERTCHILDXML,INSERTCHILDXMLAFTER,INSERTCHI ...

  3. 06 PSP成熟度模型【软件过程与管理】

    PSP成熟度模型(Personal Software Process) 个体度量过程 PSP3 周期开发 个体计划过程 PSP2 代码评审 设计评审 PSP2.1 设计模板 个体质量管理过程 PSP1 ...

  4. C++ 自动计时

    #include<iostream> #include<chrono> struct Timer { std::chrono::time_point<std::chron ...

  5. 论文阅读:A new approach solve the multi-product multi-period inventory lot sizing with supplier selection problem

    论文:A new approach solve the multi-product multi-period inventory lot sizing with supplier selection ...

  6. ArrayList,LinkedList,Vector三者的区别

    List 中元素是有序的,元素可以重复,因为该集合体有索引 ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高. 当元素放满了后,默认以原长度的 50%+1 的长度加长集合 ...

  7. #费马小定理#JZOJ 4015 数列

    题目 给出\(x_n=(ax_{n-1}^2+bx_{n-1}+c)\bmod m\) 给出\(x_0.a,b,c,n,m\),求\(x_n\) \(\text{Subtask 1:}n\leq 10 ...

  8. #SG函数#HDU 1848 Fibonacci again and again

    题目 分析 可取状态只能是斐波那契数,求出SG函数 然后判断三个数sg函数异或和不为0先手必胜 代码 #include <cstdio> #include <cctype> # ...

  9. #李超线段树 or 斜率优化+CDQ分治#洛谷 4655 [CEOI2017]Building Bridges

    题目 分析 列出方程即为\(dp[i]=\min\{dp[j]+(h[i]-h[j])^2+s[i-1]-s[j]\}\) \(dp[j]+h[j]^2-s[j]=2*h[i]*h[j]+dp[i]- ...

  10. #博弈论#HDU 2516 取石子游戏

    题目 \(n\)个石子,两人轮流取.先取者第1次可以取任意多个, 但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍. 取完者胜.先取者负输出"Second win".先取 ...