c# - Serilog 文件接收器 - System.MissingMethodException:找不到方法:Serilog.LoggerConfiguration
问题描述
当我尝试使用文件接收器时,我收到了 MissingMethodException。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(logFilePath, rollingInterval: RollingInterval.Day, shared: true)
.CreateLogger();
这真的很奇怪,因为我以前用相同的设置使用过它,它从来没有出现任何问题,但我确定这是导致错误的原因,因为如果我去掉 .WriteTo.File() 行,我不会'得到错误。
这是我的packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ModPlus.Revit.API.2020" version="1.0.0" targetFramework="net472" />
<package id="Serilog" version="2.9.0" targetFramework="net472" />
<package id="Serilog.Sinks.File" version="4.1.0" targetFramework="net472" />
</packages>
你能想出发生这种情况的原因吗?
我见过类似的问题,通常是由于程序集文件中的版本不匹配,但我检查并引用了正确的版本(至少在我的packages.config中可以看到)
编辑 2: 调用 Serilog 的代码是 Revit(3D 建模软件)的插件,我只是尝试在 2 个不同版本的平台中运行此插件:
- Revit 2020,我得到了未处理的异常
- Revit 2019,它工作正常!(我需要插件在两个版本上都可以工作)
两个版本的软件都使用同一个版本的.NET Framework, 4.7.2
这是否提供了更多线索?在一个版本中可能出了什么问题,而在另一个版本中却没有?
解决方案
此错误表明您以某种方式Serilog.Sinks.File.dll
在输出文件夹中获得了旧版本,这不是您通过 NuGet 安装的版本。
打开您的.csproj
文件并检查所有引用Serilog.Sinks.File.dll
并确保您只有一个引用,并且它指向正确的 nuget 包文件夹(4.1.0)。
它应该看起来像:
<ItemGroup>
<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
<HintPath>..\packages\Serilog.2.9.0\lib\net46\Serilog.dll</HintPath>
</Reference>
<Reference Include="Serilog.Sinks.File, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
<HintPath>..\packages\Serilog.Sinks.File.4.1.0\lib\net45\Serilog.Sinks.File.dll</HintPath>
</Reference>
</ItemGroup>
您还可以使用dotPeek之类的工具来检查输出文件夹中的程序集并确认您是否拥有正确的程序集。
此外,虽然我认为它与这个特定错误无关,但请确保您在项目属性中启用了自动生成绑定重定向,以便Serilog.Sinks.File
对 Serilog 2.5.0 的引用重定向到 Serilog 2.9.0。
推荐阅读
- string - 提取两个字符串之间的字符串
- python - 我正在尝试导入 selenium webdriver,使用 Python IDLE 3.7 64bit 编写脚本:我使用的命令是“from selenium import webdriver”
- cordova-plugins - Cordova 隐藏应用程序的背景
- .net - 非常有效地从 Azure Blob 引导文件
- javascript - SweetAlert2 Typescript Webpack 构建错误
- amazon-web-services - 在 ECS 上部署时出现 MultipartException - Spring 1.5.15.RELEASE
- javascript - 将“navigator.mediaDevices.getUserMedia”替换为“canvas.captureStream”
- typescript - 如何在 TypeScript 中导出变量并填充?
- oracle - 尝试添加第三个联合时返回错误
- java - GSON MD5 和不匹配 - 如何计算 MD5?