Problem

The S4S and G4S products include a dependency on a specific version of log4net. If another part of your project also includes a dependency on another version of the log4net assembly a System.TypeInitializationException will occur with an inner exception like:

{"Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"}

Solution 1

Provide steps that the user can take to solve the problem. For example "The level 7 printer will flash red when it is out of paper. Add paper to tray 1".

  1. Create sub folders in your project for each version of log4net you need to reference. Add the corresponding log4net.dll to each folder.
  2. Set "Copy to Output Directory" for each dll to "Copy always"
  3. Add a runtime section to the .config that indicates the location of each required log4net version.

        <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
              <codeBase version="1.2.9.13" href="log4netv1.2.13.0\log4net.dll" />
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
              <codeBase version="1.2.15.0" href="log4netv1.2.10.0\log4net.dll" />
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
  4.  

Solution 2

Load the required versions of log4net into the GAC and ensure the project references include the Version and PublicKeyToken details.

Related articles

Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.