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

在运行中的IIS站点更新DLL:版本不匹配问题及无VS授权的解决方法

解决方案:无需Visual Studio匹配程序集版本与清单

核心逻辑

程序集清单是嵌入DLL的元数据,直接编辑DLL二进制内容会破坏清单结构,导致"无程序集清单"错误。可以借助免费工具修改版本并修复清单,无需重新编译整个站点。

免费工具操作步骤

1. 用ildasm+ilasm(微软.NET框架自带工具)

  • 导出DLL的IL代码与资源:
    以管理员身份打开命令提示符,执行:
    ildasm Target.dll /out:Target.il /resource:Target.res
    
  • 修改IL文件中的版本信息:
    用记事本打开Target.il,找到类似代码块,修改版本号为站点清单要求的数值:
    .assembly Target
    {
      .ver 1:0:0:0  // 修改为匹配的版本,比如2:1:3:0
    }
    
  • 重新编译生成带正确清单的DLL:
    执行命令:
    ilasm Target.il /dll /resource:Target.res /output:Target_Updated.dll
    
  • 用生成的Target_Updated.dll替换站点bin目录下的原文件。

2. 用dotnet build(适用于.NET Core/.NET 5+)

如果能拿到该DLL对应的项目文件(.csproj):

  • 编辑.csproj中的版本属性:
    打开文件,修改<Version>节点:
    <PropertyGroup>
      <Version>2.1.3.0</Version> <!-- 改为目标版本号 -->
    </PropertyGroup>
    
  • 单项目编译:
    在项目目录下执行:
    dotnet build --configuration Release
    
    编译完成后从bin/Release/netX.X目录获取更新后的DLL。

关键注意事项

  • 版本号需与站点引用清单的四位数值(主版本/次版本/生成号/修订号)完全匹配。
  • 若DLL是强命名程序集,修改后需用原密钥重新签名,使用sn.exe工具:
    sn -R Target_Updated.dll YourKey.snk
    
  • 操作前务必备份原DLL及站点相关文件,防止故障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:22:39