我遇到了这个例外:
System.Configuration.ConfigurationErrorsException:的值 提供程序选项中的'compilerVersion'属性必须为'v4.0'或 稍后,如果您正在编译.NET 4.0或更高版本的.NET 框架。
我该怎么做才能解决这个问题?
答案 0 :(得分:63)
我遇到了类似的问题,并且必须通过修改Web.config
告诉ASP.NET配置如何使用3.5编译器。
我已经从我的代码中复制并粘贴了以下内容。您必须将value =“v3.5”更改为value =“v4.0”。 编译器类型字符串也可能会更改。
<configuration>
<!-- ... other configuraiton stuff ... -->
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
</configuration>
在我的情况下,正在使用2.0编译器而不是3.5。我在IIS 7,ASP.NET网站项目中工作。
您可以从以下方面收集更多信息:
答案 1 :(得分:29)
这应该有帮助
<configuration>
<!-- -->
<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>
</compilers>
</system.codedom>
<!-- -->
</configuration>
答案 2 :(得分:27)
就我而言,我试图使用4.0运行子应用程序,但父应用程序仍然需要使用2.0。使用<location path="." inheritInChildApplications="false">
标记将父编辑器中的编译器信息包装好。
Parent Web.config:
<location path="." inheritInChildApplications="false">
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
</system.codedom>
答案 3 :(得分:9)
从web.config中删除此部分
<compilation debug="true" strict="true" explicit="true" targetFramework="4.0" />
答案 4 :(得分:1)
在我的情况下,它是默认网站下的子网站,虽然默认网站设置是在ASP.NET 4.0中设置的,但web.config文件设置为2.0和3.5。更改web.config文件以使用4.0修复它。 使用此参考:ASP.NET 4 Breaking Changes
答案 5 :(得分:1)
我们意外地将 Web.config 复制粘贴到 C:\ inetpub \ wwwroot 中。这个意外复制粘贴的Web.config配置不匹配,导致我们的compilerVersion错误。删除Web.config为我们解决了问题。
答案 6 :(得分:0)
就我而言,我使用的是旧的Webform网站(V 2.0),需要附加一个在MVC4.0中开发的新应用程序。我遇到了同样的错误,经过给定解决方案的许多排列和组合之后,我将父应用程序的整个web.comfig包装在以下标记中
<location path="." inheritInChildApplications="false">
...... web config tags here........
</location>