Solved Error : Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe'


When we encountered the same problem with the Newtonsoft DLL, we resolved it by updating the DLL from NuGet, which successfully solved the issue.

Later, when we get the error again, we fixed it by commenting out the entry in the web.config file that contains System.Runtime.CompilerServices.Unsafe.

If the above solutions did not work for you, you can use the NuGet package manager to uninstall the problematic package in your project and then reinstall it again.

Initially, updating the problematic DLL from NuGet is a common and effective solution, However, if the problem persists, we might need to consider other factors such as configurations in the web.config file. In some cases, commenting out specific entries can resolve conflicts or errors. if all else fails, uninstalling and reinstalling the problematic package via NuGet can help in resolving issues related to dependencies or corrupted installations. 


2

If you facing the error "Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe'", it usually shows that the required assembly for handling unsafe code in .NET applications is missing and this can happen due to various reasons such as missing dependencies, incorrect version of the assembly, or the assembly being improperly installed.

To solve this issue, we need to ensure that the necessary assembly 'System.Runtime.CompilerServices.Unsafe' is correctly referenced in our project so solve that error message you can try below approach

  1. First and very importent, ensure that the 'System.Runtime.CompilerServices.Unsafe' assembly is referenced in project and To check this, right-click on your project in Visual Studio Solution Explorer, select "Manage NuGet Packages", and search for 'System.Runtime.CompilerServices.Unsafe'. If it's not installed, install it.
  2. We also need to ensure that the version of 'System.Runtime.CompilerServices.Unsafe' referenced in your project matches the version required by other dependencies. Mismatched versions can lead to runtime errors.
  3. If the assembly is expected to be in the GAC, verify its presence there. You can use the 'gacutil' tool to install or verify the presence of the assembly in the GAC.
  4. Rebuild your solution to ensure that all necessary assemblies are correctly referenced and included in the build output.
3

I also face the same issue 

System.IO.FileLoadException: "Could not load file or assembly "System.Runtime.CompilerServices.Unsafe, Version=6.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" or one of it's dependences. The found Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)

Based on our assessment, we propose the following suggestions:

  1. Registering System.Runtime.CompilerServices.Unsafe version 6.0.0 into GAC: To ensure the system recognizes the desired assembly version, we recommend registering the version 6.0.0 of System.Runtime.CompilerServices.Unsafe into the GAC. To achieve this, follow these steps:
    • Run the Command Prompt for VS2022 as Administrator.
    • Navigate to the directory where System.Runtime.CompilerServices.Unsafe 6.0.0 is located using the 'cd' command.
    • Execute the command 'gacutil /i System.Runtime.CompilerServices.Unsafe.dll' to install the assembly into the GAC.
  2. Utilizing bindingRedirect in Net Framework projects: For projects utilizing a config file, we suggest using bindingRedirect. Add the following configuration to the app.config or web.config file:
    
    <configuration>  
       <runtime>  
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
             <dependentAssembly>  
                <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe"  
                                  publicKeyToken="b03f5f7f11d50a3a"  
                                  culture="neutral" />  
                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0"  
                                 newVersion="6.0.0.0"/>  
             </dependentAssembly>  
          </assemblyBinding>  
       </runtime>  
    </configuration>
          

By registering the desired assembly version into the GAC ensures system-wide recognition of the correct version, while utilizing bindingRedirect in configuration files helps manage version conflicts in .NET Framework projects.

4

This error typically occurs when your project tries to use functionalities from the System.Runtime.CompilerServices.Unsafe assembly, but for some reason, it can't be located or loaded correctly. 

1. Missing NuGet Package:

The System.Runtime.CompilerServices.Unsafe assembly is often part of the .NET Framework or the .NET Core NuGet packages. If your project doesn't have these packages referenced, it might be missing the necessary assembly. Open your project's NuGet Package Manager and search for and install the appropriate package based on your project framework (e.g., System.Runtime.CompilerServices.Unsafe for .NET Core) and rebuild your project after installing the package.
2. Binding Redirects
In some scenarios, we need to configure binding redirects in project's configuration file (.config) to explicitly specify which version of the assembly to load.


<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <publisherPolicy apply="no"/>
      <bindingRedirect oldVersion="5.0.0" newVersion="6.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
5

To resolve my issue, I deleted the "bin" and "obj" folders in my project directory. Additionally, I removed the package/assembly reference entry present in the web.config file.

However, for another project where this solution didn't work, I took a different approach. I installed the latest 6.0.0.0 package across my solution and then added a binding redirect to version 6 in the web.config file:

        
            <dependentAssembly>
                <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="6.0.0.0"/>
            </dependentAssembly>
        
    

Allowed me to update the assembly reference to the latest version across the solution and ensure compatibility by adding a binding redirect in the web.config file.

6

I encountered the same issue when running unit tests using VS2022, and I resolved it by adding the following line to the unit test .csproj file, within the first :

        
            <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
        
    

This setting allow us to generate binding redirects output, which helped resolve compatibility issues and ensure that the unit tests run successfully in the VS2022 environment.

7

In my case, I couldn't pinpoint the exact problem causing the issue. Therefore, I decided to reinstall the System.Runtime.CompilerServices.Unsafe package along with all its dependent packages.

Before uninstalling, it's important to make a note of the version currently installed and ensure to install the correct version based on the project's framework.