龙空技术网

Nuget包多层依赖导致的线上异常

IT一刀 56

前言:

现时兄弟们对“netpdb干什么用的”可能比较关怀,朋友们都想要分析一些“netpdb干什么用的”的相关文章。那么小编也在网上搜集了一些对于“netpdb干什么用的””的相关资讯,希望小伙伴们能喜欢,看官们快快来学习一下吧!

现状及项目情况描述,有3个项目:服务项目A YH.ServiceAPI业务公共逻辑项目B YH.Bussiness 打了NugetPackage基础设施项目C YH.Infrastructure 打了NugetPackage

其中项目A引用了项目B的Nuget包,项目B引用了项目C的Nuget包,A与C没有直接强依赖关系如下图:操作过程:迭代中有开发人员在项目B中更新了C的Nuget包,私有方法中使用了C中某个类的新属性,或者新方法另一个名开发人员在项目A中更新了B的Nuget包,项目A中C的Nuget包版本未升级(由于A与C没有强依赖关系因此项目A中并没有将项目C的Nuget包升级到项目B所需要的版本)此时项目编译仍然正常不会报错上线之后出现问题:项目服务A上线之后操作某个功能报异常 ErrorMessage:Method not found: 'xxxProvider.GetValueByCodeV2(System.String, System.String)'.排查异常根据异常信息提示相关代码排查发现项目A中未更新C的Nuget包,导致运行时找不到C中的方法。处置方案更新项目A在C的Nuget包版本,并及时hotfix上线;团队内宣贯:基础设置等公共项目更新其依赖的Nuget包时,必须在基础设施项目自身打包文件中加入强其他项目的依赖,并设置对应最低版本。eg:项目YH.Bussiness 的YH.Bussiness.nuspec文件中加入项目C等强依赖及版本信息如下:

<?xml version="1.0"?>  <package >    <metadata>      <id>YH.Bussiness</id>      <version>1.0.0.0</version>      <authors>YHCorp</authors>      <owners>YHCorp</owners>      <requireLicenseAcceptance>false</requireLicenseAcceptance>      <description>YH.Bussiness</description>      <releaseNotes>版本第一次构建</releaseNotes>      <copyright>Copyright 2021</copyright>      <tags>YH.Bussiness</tags>      <dependencies>        <dependency id="YH.MessageTemplate" version="[1.1.0.47,)" />        <dependency id="YH.Infrastructure" version="[1.1.0.12,)" />      </dependencies>    </metadata>      <files>        <file src="D:\MSBuildWorkSpace\YH.Bussiness\bin\Release\YH.Bussiness.dll" target="lib\net45" />        <file src="D:\MSBuildWorkSpace\YH.Bussiness\bin\Release\YH.Bussiness.pdb" target="lib\net45" />      </files>  </package>

标签: #netpdb干什么用的