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

.NET Framework 4.8中System.Diagnostics.EventLog.dll缺失问题问询

问题分析与解决方案

问题根源

你判断的完全正确,核心矛盾是不同目标框架下程序集的归属差异导致绑定冲突:

  • .NET Standard 2.0 中,System.Diagnostics.EventLog类被拆分到独立的System.Diagnostics.EventLog.dll程序集
  • .NET Framework 4.8 中,该类仍属于基础类库的System.dll,不存在独立的System.Diagnostics.EventLog.dll

当.NET Framework 4.8项目(SecondLib)引用.NET Standard 2.0的FirstLib时,编译阶段会基于.NET Standard的依赖关系生成绑定请求,但运行时(尤其是Wix自定义动作这类特殊宿主环境)找不到这个独立程序集,最终触发绑定失败。

解决方案

方案1:通过程序集重定向强制绑定到System.dll

在SecondLib的配置文件(或Wix自定义动作的配套配置文件)中添加重定向规则,让CLR将对System.Diagnostics.EventLog.dll的请求导向System.dll:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.EventLog" 
                          publicKeyToken="b03f5f7f11d50a3a" 
                          culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" 
                         newVersion="4.0.0.0" />
        <codeBase version="4.0.0.0" 
                  href="C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

注意:Wix自定义动作的配置文件需与自定义动作DLL同名(如CustomAction.dll.config),且必须打包进安装包,部署时与DLL放在同一目录。

方案2:修改FirstLib的目标框架(若允许)

如果FirstLib不需要跨平台兼容,直接将其目标框架改为.NET Framework 4.8,编译时会直接引用System.dll中的EventLog类,从根源上消除绑定冲突。

方案3:用条件编译适配多框架

若FirstLib必须保留.NET Standard 2.0兼容性,可在FirstLib中通过条件编译区分框架逻辑:

#if NETFRAMEWORK
// .NET Framework环境下使用System.dll中的EventLog
using System.Diagnostics;
#else
// .NET Standard/.NET Core环境下使用独立程序集的EventLog
using System.Diagnostics.EventLog;
#endif

同时在FirstLib的项目文件中添加条件引用规则:

<ItemGroup>
  <!-- 仅非.NET Framework环境引用独立程序集 -->
  <PackageReference Condition=" '$(TargetFramework)' != 'net48' " 
                    Include="System.Diagnostics.EventLog" 
                    Version="6.0.0" />
</ItemGroup>

补充说明

Wix自定义动作的运行环境较为特殊,默认不会自动加载额外的程序集重定向配置,务必确保配置文件正确部署。另外可再次使用fuslogvw.exe验证重定向是否生效,查看绑定日志中是否显示成功导向System.dll。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:57:20