CodeDom provider can't be located after another application deployed
Asked Answered
C

1

6

I had two web applications deployed in a site under IIS 7.5

site.com/myApp site.com/anotherMyApp

Now another devs deployed their app as root application

site.com/

Now when I access site.com/myApp or /anotherMyApp it throws:

The CodeDom provider type "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" could not be located.

Source error :

Line 54:   <system.codedom>
Line 55:     <compilers>
Line 56:       <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" />
Line 57:       <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=\&quot;Web\&quot; /optionInfer+" />
Line 58:     </compilers>

Source File: C:\inetpub\wwwrootprettysite\THEIR APPLICATION\web.config

Questions

Why is this happening?
Why is the "source error" in their application's webconfig and how does it affect my application?
How do I fix my applications without breaking theirs?

To clarify :

  • Application hierarchy is correct, their application should be
    installed in root.
  • .NET framework installed is 4.5.2
  • Their application is using Roslyn compiler which is supplied in bin/roslyn
  • My applications web.configs have no <system.codedom> section.
Council answered 11/5, 2016 at 12:45 Comment(0)
F
6

Your app inherits the config from its parent app, and your app doesn't have Microsoft.CodeDom.Providers.DotNetCompilerPlatform. That's why you see that error. There are several options.

  1. Override system.codedom setting in your web.config
  2. Install Microsoft.CodeDom.Providers.DotNetCompilerPlatform nupkg in your app
Frangipani answered 27/5, 2016 at 20:41 Comment(2)
How do you exactly "override" system.codedom setting ?Antetype
Just add <system.codedom> into the web.config under your web app folder. If you just want to use old codedom provider, you can add the following setting. <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v4.0" /> <providerOption name="WarnAsError" value="false" /> </compiler> //....Frangipani

© 2022 - 2024 — McMap. All rights reserved.