When I run my dotnet core web application in Docker I get an error
Unhandled exception. System.IO.FileLoadException: Could not load file
or assembly 'System.Configuration.ConfigurationManager,
Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
The located assembly's manifest definition does not match the assembly
reference. (0x80131040) File name:
'System.Configuration.ConfigurationManager, Version=4.0.1.0,
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at
System.Reflection.RuntimeAssembly.GetExportedTypes() at
System.Reflection.Assembly.get_ExportedTypes() at
Serilog.Settings.Configuration.ConfigurationReader.<>c.<FindConfigurationExtensionMethods>b__29_0(Assembly
a) at
System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at
System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.ToList() at
System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at
Serilog.Settings.Configuration.ConfigurationReader.FindConfigurationExtensionMethods(IReadOnlyCollection`1
configurationAssemblies, Type configType) at
Serilog.Settings.Configuration.ConfigurationReader.FindSinkConfigurationMethods(IReadOnlyCollection`1
configurationAssemblies) at
Serilog.Settings.Configuration.ConfigurationReader.ApplySinks(LoggerConfiguration
loggerConfiguration) at
Serilog.Settings.Configuration.ConfigurationReader.Configure(LoggerConfiguration
loggerConfiguration) at
Serilog.Configuration.LoggerSettingsConfiguration.Settings(ILoggerSettings
settings) at
Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration
settingConfiguration, IConfiguration configuration, String
sectionName, DependencyContext dependencyContext) at
Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration
settingConfiguration, IConfiguration configuration, DependencyContext
dependencyContext) at EWA.Program.Main(String[] args) in
/src/EWA/Program.cs:line 39
I use Serilog in this manner:
var configuration = new ConfigurationBuilder()
.AddJsonFile($"appsettings.{environment}.json",
optional: true,
reloadOnChange: true)
.Build();
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).Enrich.FromLogContext().CreateLogger(); // <<line 39
This error shows randomly. Some branches work without error, some branches fail. The target framework of the application is .Net Core 3.1. Docker images are created in GitLab runner on our own Debian server.
Do you have any idea how can I solve this problem? Thanks
UPDATE: I found out that I do not need to add System.Configuration.ConfigurationManager Nuget package. MSBuild load System.Configuration.ConfigurationManager itselves. When I build application in VS, loaded assembly is System.Configuration.ConfigurationManager 4.0.3.0. But if I build application by docker compose it loads System.Configuration.ConfigurationManager 4.0.0.0 and application not runs.
User contributions licensed under CC BY-SA 3.0