Nu s-a putut încărca fișierul sau ansamblul ‘Microsoft.CodeDom.Providers.DotNetCompilerPlatform’. (Programare, Asp.Net, Studio Vizual, Asp.Net Mvc 5)

Teije a intrebat.

Alte articole de aici nu au reușit să îmi rezolve problema. Următoarele erori sunt aruncate atunci când rulează proiectul meu web ASP.NET MVC5.

Are cineva o idee unde greșesc?

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:UsersTeijeDocumentsgitProject2.2HaarlemFestival-Webbin
Calling assembly : (Unknown)
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:UsersTeijeDocumentsgitProject2.2HaarlemFestival-Webweb.config
LOG: Using host configuration file: C:UsersTeijeDocumentsIISExpressconfigaspnet.config
LOG: Using machine configuration file from C:WindowsMicrosoft.NETFrameworkv4.0.30319configmachine.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.

Comentarii

  • Ați instalat pachetul nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform? –  > Por hardkoded.
  • Nu am făcut acest lucru manual. Lucrez la acest proiect de câteva luni (pentru școală) și abia acum îmi întoarce această eroare). Cum aș putea să fac asta? –  > Por Teije.
  • Ați putea verifica dacă aveți Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll în bin și care este versiunea? –  > Por hardkoded.
4 răspunsuri
mhenrickson

Tocmai am avut această eroare într-unul dintre mediile noastre de testare. Problema a fost în fișierul web.config. Secțiunea avea setări pentru a face referire la ansamblul DotNetCompilerPlatform, dar avea numărul de versiune greșit. Am actualizat web.config la numărul de versiune corect și am remediat eroarea.

<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=&quot;Web&quot; /optionInfer+" />
</compilers>

Comentarii

  • După ce am instalat pachetul Nuget, acesta a actualizat fișierul web.config, dar nu și pe cel care se afla sub el (web.base.config), așa că, atunci când am construit proiectul, acesta a fost suprascris. Pentru a remedia acest lucru, când instalați pachetul Nuget, copiați partea modificată din fișierul Web.config părinte, apoi înlocuiți secțiunea corespunzătoare în fișierul de configurare imbricate. –  > Por Calculuswhiz.
Mahmoud Valizadeh

Această problemă provine de la pachetul Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

Este o versiune greșită. Puteți elimina versiunea curentă, apoi instalați din nou din Nuget.

Jeff Woods

Se poate întâmpla, de asemenea, dacă dosarul țintă este altceva decât „bin/”. Roslyn caută în mod implicit folderul „roslyn” în folderul „bin”, astfel încât, dacă compilați, de exemplu, în „bin/debug/”, este posibil să nu existe un folder roslyn acolo și, prin urmare, să nu poată găsi furnizorul.

Puteți remedia acest lucru revenind la o țintă simplă „bin/” sau asigurându-vă că un dosar roslyn complet este copiat în dosarul „bin/debug/” ca eveniment post-construcție. Deoarece o publicare împinge întotdeauna în folderul țintă corect, în ciuda folderului țintă de compilare al mașinii dvs. de compilare, acesta este motivul pentru care nu reușește atunci când o executați local, dar funcționează dacă o implementați.

(Unii oameni au problema opusă, funcționează la nivel local, dar eșuează atunci când este implementat pe IIS, deoarece IIS nu are o copie a furnizorului CodeDom în GAC, dar aceasta este o problemă total diferită).

k4st0r42

Rezolvat prin conform răspunsului lui Jeff Woods :

<PropertyGroup>
    <OutputPath>bin</OutputPath>
  </PropertyGroup>