Je fais face à une erreur ASP.NET lors du déploiement sur un serveur:
Le type de fournisseur CodeDom "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" est introuvable.
Cette erreur ne se produit que sur un serveur spécifique, lors de son exécution localement ou sur un autre serveur, cela fonctionne très bien.
ligne packages.config CodeDom
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
ligne Web.Config CodeDom
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
Le projet a probablement la référence Roslyn et le serveur IIS sur lequel vous déployez ne le prend pas en charge. Mettez à niveau le serveur ou supprimez le compilateur Roslyn de votre projet. La suppression de Roslyn est assez sûre. et ne devrait rien affecter.
Pour supprimer Roslyn de votre projet, supprimez les packages Nuget suivants en exécutant les commandes:
PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
ou via Nuget GUI (clic droit sur le projet -> Gérer les packages Nuget)
Si cela n'aide pas, accédez à votre Web.config et supprimez la configuration suivante et redémarrez IIS:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /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.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>