本文记录一个 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. MySQL varchar详解

    说明:以下结果都是在mysql8.2及Innodb环境下测试. varcahr(255)是什么含义? varchar(255) 表示可以存储最大255个字符,至于占多少个字节由字符集决定. varch ...

  2. C# 委托(delegate)本质理解

    代码如下,很简单 namespace Delegate { class Program { delegate void SayHi(); void SayHi_1() { Console.WriteL ...

  3. ContiPerf是一个轻量级的测试工具,基于JUnit 4 开发,可用于效率测试等。

    1.在maven中使用ContiPerf <dependency> <groupId>junit</groupId> <artifactId>junit ...

  4. Linux实现远程登录基本操作

    Linux配置远程登录 1.实验目的 通过配置redhat的静态IPV4,通过xshell登录,实现远程指令控制.在实践过程中,了解linux的基本结构和操作,能够初步地使用linux的常用软件.目的 ...

  5. KingabseES 隐式游标属性值(SQL%attribute)

    隐式游标介绍 Oracle数据库迁移到KingbaseES数据库,不需要将源PL/SQL脚本,大规模修改为KES语法,因为KingbaseES支持大部分PLSQL语法. 1.隐式游标 隐式游标是由 P ...

  6. java:寻找两个字符串的最长公共子串

    java:寻找两个字符串的最长公共子串 // 找一个字符串的所有子串 public static List<String> findAllStr(String s) { List<S ...

  7. #Dinic,最大权闭合子图#CF1473F Strange Set

    题目 分析 对于这种依赖关系,可以将正权值连源点,负权值连汇点, 然后 \(i\) 向 \(j(j<i)\) 连无穷大的边,注意到如果完全建图空间不够, 考虑记录每个约数最后一次出现的位置,直接 ...

  8. #bitset优化,莫队#洛谷 5355 [Ynoi2017] 由乃的玉米田

    没有除法的版本 弱化版Blog 题目 分析 只针对除法而言,如果商很大直接用bitset判断是否存在, 否则直接预处理最近的答案判断是否在区间内即可,注意0要特判 代码 #include <cs ...

  9. #Tarjan#洛谷 4819 [中山市选]杀人游戏

    题目 分析 缩点后显然只考虑入度为0的点的个数, 但是问题是如果有一个入度为0的点缩点前只有1个点 且它的出边上的所有点都可以被其它入度为0的点遍历, 那么可以将其它点全部排除后剩下的这个点就是凶手, ...

  10. #线段树合并#洛谷 3224 [HNOI2012]永无乡

    题目 分析 和主席树不同的是,线段树合并后原树的信息不会保留, 这样就保证空间和常数都比较小,这题比较裸,直接上代码 代码 #include <cstdio> #include <c ...