Fehlermeldung über nicht gefundene Assembly "Microsoft.Web.Infrastructure"

Bei einer älteren ASP.NET-MVC-Webanwendung mit .NET Framework 4.8 trat wie aus dem nichts lokal in meiner Entwicklungsumgebung mit IIS Express folgender Fehler auf:

Die Datei oder Assembly „Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Auf Stack Overflow gibt es eine passende Frage samt zahlreicher Antworten.

Details

In meiner CSPROJ-Datei war die Referenz so:

<Reference Include="Microsoft.Web.Infrastructure, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\..\..\_NuGetPackages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

Der HintPath ist korrekt.

Trotzdem hat die Datei unter "Referenzes” im Solution Explorer ein gelbes Ausrufezeichen:

image

Lösung

In meinem Fall haben diese beiden Dinge geholfen.

1.) Konkrete Version aus CSPROJ entfernen:

<Reference Include="Microsoft.Web.Infrastructure">
  <HintPath>..\..\..\_NuGetPackages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

2.) In der Web.Config bei den <assemblyBinding>-Einträgen explizit auf Version 1 biegen, nicht auf Version 2:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.Web.Infrastructure" publicKeyToken="31BF3856AD364E35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-99.0.0.0" newVersion="1.0.0" />
</dependentAssembly>

Warum auch immer, das war ein Vorschlag von ChatGPT o3.

Anschließend lief die Website wieder.