部署另一个应用程序后无法找到 CodeDom 提供程序
CodeDom provider can't be located after another application deployed
我在 IIS 7.5 下的站点中部署了两个 Web 应用程序
site.com/myApp
site.com/anotherMyApp
现在另一个开发者将他们的应用程序部署为根应用程序
site.com/
现在,当我访问 site.com/myApp
或 /anotherMyApp
时,它抛出:
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.
来源错误:
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=\"Web\" /optionInfer+" />
Line 58: </compilers>
Source File: C:\inetpub\wwwrootprettysite\THEIR APPLICATION\web.config
问题
为什么会这样?
为什么 他们应用程序的 webconfig 中的 "source error" 以及它如何影响我的应用程序?
如何在不破坏应用程序的情况下修复我的应用程序?
澄清:
- 应用层级是正确的,他们的应用应该是
安装在根目录下。
- .NET框架安装的是4.5.2
- 他们的应用程序使用 bin/roslyn
中提供的 Roslyn 编译器
- 我的应用程序 web.configs 没有
<system.codedom>
部分。
您的应用继承了其父应用的配置,并且您的应用没有Microsoft.CodeDom.Providers.DotNetCompilerPlatform。这就是您看到该错误的原因。有几个选项。
- 覆盖 web.config
中的 system.codedom 设置
- 在您的应用中安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform nupkg
我在 IIS 7.5 下的站点中部署了两个 Web 应用程序
site.com/myApp site.com/anotherMyApp
现在另一个开发者将他们的应用程序部署为根应用程序
site.com/
现在,当我访问 site.com/myApp
或 /anotherMyApp
时,它抛出:
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.
来源错误:
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=\"Web\" /optionInfer+" />
Line 58: </compilers>
Source File: C:\inetpub\wwwrootprettysite\THEIR APPLICATION\web.config
问题
为什么会这样?
为什么 他们应用程序的 webconfig 中的 "source error" 以及它如何影响我的应用程序?
如何在不破坏应用程序的情况下修复我的应用程序?
澄清:
- 应用层级是正确的,他们的应用应该是
安装在根目录下。 - .NET框架安装的是4.5.2
- 他们的应用程序使用 bin/roslyn 中提供的 Roslyn 编译器
- 我的应用程序 web.configs 没有
<system.codedom>
部分。
您的应用继承了其父应用的配置,并且您的应用没有Microsoft.CodeDom.Providers.DotNetCompilerPlatform。这就是您看到该错误的原因。有几个选项。
- 覆盖 web.config 中的 system.codedom 设置
- 在您的应用中安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform nupkg