背景:

核心库NewLife.Core中,针对netstandard2.0扩展了String.Contain(Char)方法。net7.0自带该方法,无需扩展。

问题:

类库NewLife.BACnet是netstandard2.0,引用了核心库NewLife.Core,其中使用了String.Contain(Char)扩展;

控制台项目Test是net7.0,引用了NewLife.BACnet;

运行Test,报String.Contain(Char)方法未找到。

分析:

NewLife.BACnet是netstandard2.0,编译时链接了NewLife.Core的String.Contain(Char)扩展。

Test运行时,使用了net7.0版本的NewLife.Core,里面没有String.Contain(Char)扩展,因此报错。

改进:

临时解决,可以给NewLife.BACnet增加net7.0目标;

正式解决,NewLife.BACnet放弃使用String.Contain(Char)扩展,规避该问题。

类似的情况在其它项目还会存在,需要引起注意!