2016-03-04 19 views
19

Ho un webproject che sto cercando di ospitare, ma quando il server tenta di compilarlo, ottengo il seguente errore:Impossibile caricare il file o il montaggio Microsoft.CodeAnalysis

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=1.1.0.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) ---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=1.0.0.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)
--- End of inner exception stack trace --- at Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args)

Così il server dispone di un anziano versione di CodeAnalysis rispetto al mio progetto. Quindi proviamo un reindirizzamento vincolante!

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.CodeAnalysis" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-9.9.9.9" newVersion="1.0.0.0" /> 
</dependentAssembly> 

Purtroppo ho ancora lo stesso errore. Che cosa sto facendo di sbagliato?

+0

problema simile con la soluzione può essere trovata qui: https://stackoverflow.com/questions/40235284/asp-net-mvc- razor-view-cs1525-invalid-expression-term – Matt

risposta

25

L'ho capito da solo. A chiunque stia leggendo questo, il problema era che il pacchetto Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform (che contiene anche il pacchetto CodeAnalysis) era la versione sbagliata. Ho creato un nuovo webproject, aggiornato subito il pacchetto Nuget e il problema è stato risolto.

+6

In alternativa, è possibile eliminare la cartella dei pacchetti in explorer, quindi correggere la soluzione in Visual Studio e fare clic su "Restore NuGet Packages". –

+0

Se solo me lo avessi detto prima di passare 3 ore a cercare di correggere questo errore. :-) – ohyeah

+1

Grazie a tutti e due - mi ha risparmiato un sacco di tempo. – tdracz

4

Ho risolto questo problema ma assicuravo che i numeri di versione degli assembly nel mio web.config fossero corretti.

Edit:

mi ha colpito questo problema come bene e qualcuno potrebbe chiedersi come il web.config può diventare non corretta. Nel mio caso io sto usando Web.Config Trasforma in modo che il file web.config viene sovrascritto: enter image description here

Modifica del numero di versione nel Web.Configs compilatore (nel Web.Template.Config) per il numero corrispondente alla versione NuGet fa risolvere il problema:

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0 
Problemi correlati