Otros artículos aquí no han podido resolver mi problema. Los siguientes errores aparecen cuando ejecuto mi proyecto web ASP.NET MVC5.
¿Alguien tiene una idea de dónde me estoy equivocando?
Could not load file or assembly 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) === Pre-bind state information === LOG: DisplayName = Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///C:/Users/Teije/Documents/git/Project2.2/HaarlemFestival-Web/ LOG: Initial PrivatePath = C:\Users\Teije\Documents\git\Project2.2\HaarlemFestival-Web\bin Calling assembly : (Unknown) === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\Teije\Documents\git\Project2.2\HaarlemFestival-Web\web.config LOG: Using host configuration file: C:\Users\Teije\Documents\IISExpress\config\aspnet.config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: Attempting download of new URL file:///C:/Users/Teije/AppData/Local/Temp/Temporary ASP.NET Files/vs/b2d7334d/e3876cf7/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL. LOG: Attempting download of new URL file:///C:/Users/Teije/AppData/Local/Temp/Temporary ASP.NET Files/vs/b2d7334d/e3876cf7/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL. LOG: Attempting download of new URL file:///C:/Users/Teije/Documents/git/Project2.2/HaarlemFestival- Web/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL. WRN: Comparing the assembly name resulted in the mismatch: Build Number ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.Este problema proviene de su paquete Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform .
Es la versión incorrecta. Puede eliminar la versión actual y luego instalarla nuevamente desde Nuget.
Acabamos de tener este error en uno de nuestros entornos de prueba. El problema estaba en el archivo web.config. La sección tenía configuraciones para hacer referencia al ensamblado DotNetCompilerPlatform, pero tenía el número de versión incorrecto. Actualizamos web.config al número de versión adecuado y solucionó el error.
<compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers>También puede suceder si su carpeta de destino es diferente a "bin/". Roslyn busca de forma predeterminada la carpeta "roslyn" en la carpeta "bin", por lo que si está compilando, por ejemplo, en "bin/debug/", es posible que no haya una carpeta roslyn allí y, por lo tanto, no puede encontrar el proveedor.
Puede solucionar esto volviendo a un objetivo simple "bin/" o asegurándose de que se copie una carpeta roslyn completa en la carpeta "bin/debug/" como un evento posterior a la compilación. Debido a que una publicación siempre se envía a la carpeta de destino correcta a pesar de la carpeta de destino de compilación de su máquina de compilación, es por eso que falla cuando se ejecuta localmente, pero funciona si la implementa.
(Algunas personas tienen el problema opuesto, funciona localmente, pero falla cuando se implementa en IIS, porque IIS no tiene una copia del proveedor de CodeDom en su GAC, pero ese es un problema totalmente diferente).
Resuelto por según la respuesta de Jeff Woods:
<PropertyGroup> <OutputPath>bin\</OutputPath> </PropertyGroup>Simplemente ejecute este comando en la Consola del administrador de paquetes:
Paquete de actualización Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
Puede obtener este error si
Si este es el caso, entonces el problema puede resolverse eliminando la carpeta de destino en la que está publicando y luego publicando su aplicación nuevamente.
Una posible explicación POR QUÉ sucede esto puede estar en esta respuesta: https://stackoverflow.com/a/57609105/2279059