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:
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.