背景:
核心库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)扩展,规避该问题。
类似的情况在其它项目还会存在,需要引起注意!