如何修复“compilerVersion”IIS错误?

时间:2010-07-23 00:06:06

标签: asp.net iis .net-4.0

我遇到了这个例外:

  

System.Configuration.ConfigurationErrorsException:的值   提供程序选项中的'compilerVersion'属性必须为'v4.0'或   稍后,如果您正在编译.NET 4.0或更高版本的.NET   框架。

我该怎么做才能解决这个问题?

7 个答案:

答案 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>