You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

尝试签名ServiceWire NuGet包后dotnet restore报NU3005错误求助

解决NU3005: 包签名文件条目无效的问题

针对你自行签名ServiceWire NuGet包后遇到的NU3005错误,以下是几个可行的解决办法:

方法1:重新打包并签名,确保压缩格式兼容

错误提示的压缩方法值(8)对应DEFLATE压缩,大概率是原包的压缩细节与NuGet签名工具不兼容,尝试重新打包后再签名:

  • 先解压未签名的原包:
    nuget unpack ServiceWire.{version}.nupkg -OutputDirectory temp-unpack
    
  • 从解压后的目录重新打包,指定标准压缩级别:
    nuget pack temp-unpack\ServiceWire.nuspec -Properties Configuration=Release -CompressionLevel Optimal
    
  • 对新生成的包执行签名操作:
    # 使用nuget命令
    nuget sign ServiceWire.{version}.nupkg -CertificatePath your-cert.pfx -CertificatePassword your-cert-pass
    # 或者用dotnet命令
    dotnet nuget sign ServiceWire.{version}.nupkg --certificate-path your-cert.pfx --certificate-password your-cert-pass
    
  • 将重新签名后的包发布到内部源,再执行dotnet restore测试。

方法2:在内部环境跳过特定包的签名验证

因为是内部源且你信任该包,可通过NuGet配置跳过ServiceWire的签名验证:

  1. 在项目根目录或用户目录下的NuGet.config中添加以下配置:
    <configuration>
      <packageSources>
        <add key="your-internal-source" value="http://your-internal-feed-url" />
      </packageSources>
      <packageSignatureValidation>
        <!-- 允许未签名包(可选,若内部源有其他未签名包) -->
        <allowUnsignedPackages>true</allowUnsignedPackages>
        <!-- 仅信任ServiceWire包的所有版本 -->
        <packageAllowList>
          <package id="ServiceWire" version="*" />
        </packageAllowList>
      </packageSignatureValidation>
    </configuration>
    
  2. 执行dotnet restore,此时会跳过对ServiceWire包的签名验证。

方法3:修改压缩方式后重新打包

如果原包使用了非标准的DEFLATE变种,可通过zip工具重新打包:

  • 用7-Zip等工具打开原未签名nupkg,将所有文件提取到本地目录。
  • 选中提取的文件,用7-Zip打包为zip格式,选择压缩方法: Deflate,压缩级别设为标准。
  • 将zip文件后缀改为.nupkg,再执行签名操作后发布到内部源。

内容的提问来源于stack exchange,提问作者youssef jirari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:50:45