Mscorlib无法找到引发FileLoadException的依赖项

时间:2018-08-16 14:01:26

标签: c# exception-handling

我有一个webApi项目,该项目引发了有关无法找到System.Diagnostics.DiagnosticSource库的异常。我添加了对该文件的nuget包的引用。但是现在我得到了:

  

System.IO.FileLoadException:'无法加载文件或程序集   'System.Diagnostics.DiagnosticSource,版本= 4.0.2.0,   文化=中立,       PublicKeyToken = cc7b13ffcd2ddd51”或其依赖项之一。找到的程序集        清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)'

“程序包”文件夹中的版本为 4.6.25519.03

如何解决此问题?

csproj参考:

    <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
    </Reference>

1 个答案:

答案 0 :(得分:1)

<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> <HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.5.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath> </Reference> 属性不必必须与该软件包的packages文件夹中的版本号匹配。实际上,我的设置为

app.config

,并且程序集上的产品版本设置为 4.6.26515.6 ,在编译过程中我没有收到任何错误或警告,并且在运行时找到了程序集。

我建议的是

  • 更新软件包(似乎您使用的是旧版本)。
  • 针对所有项目检查其他参考版本。有时会有多个版本,因为有人在项目而非解决方案级别管理软件包。
  • 检查其他NuGet软件包的依赖关系;它们可能引用了其他版本,这导致.NET程序集探测尝试加载错误的版本。您可以使用AssemblyBinding Log Viewer进行诊断。另外,请尝试更新这些软件包。

如果这些方法无济于事,请考虑在您的# /etc/systemd/system/btrfs-scrub@-.timer.d/OnCalendar.conf [Timer] OnCalendar= OnCalendar=*-*-01 00:00:00 文件中添加一个binding redirect