.NET Standard 2.0类库集成log4net在Windows服务中遇加载异常
解决.NET Framework 4.6.1 Windows服务引用.NET Standard 2.0类库时log4net的System.Runtime加载异常
我之前也碰到过类似的跨框架依赖问题,结合实战经验给你几个靠谱的解决方案:
启用自动绑定重定向
打开你的Windows服务项目的.csproj文件,添加以下配置:<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>保存后重新生成项目,这会让.NET Framework自动处理.NET Standard类库带来的依赖版本冲突,生成正确的绑定重定向到
app.config中。手动添加System.Runtime绑定重定向
如果自动生成没生效,直接在Windows服务的app.config里添加手动绑定重定向:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>这里的
newVersion可以根据你项目实际引用的System.Runtime版本调整,.NET Framework 4.6.1环境下一般对应4.0.0.0版本。更新log4net版本
尝试把log4net从2.0.8升级到更近期的版本(比如2.0.15及以上),新版本对.NET Standard和.NET Framework的跨框架兼容性做了更完善的优化,能有效减少这类依赖加载异常。检查部署目录的依赖文件
确认Windows服务部署目录下是否包含了所有必要的依赖dll,尤其是System.Runtime.dll以及相关的依赖组件。有时候部署过程中,.NET Standard类库的依赖不会自动复制到.NET Framework宿主项目的输出目录,需要手动确认或调整项目引用的"复制本地"属性。
内容的提问来源于stack exchange,提问作者ronilk
相关产品推荐
相关产品推荐

