2010-07-23 108 views
51

我得到這個異常:如何解決「compilerVersion」IIS錯誤?

System.Configuration.ConfigurationErrorsException:在供應商選擇中 「compilerVersion」屬性的值必須是「4.0版」或 後,如果要編譯支持版本4.0或更高版本的.NET 框架。

我應該怎麼做才能解決這個問題?

回答

56

這一部分,我也有類似的問題,不得不告訴ASP.NET在配置上採用了3.5編譯器通過修改Web.config如下。

我從我的代碼中複製並粘貼了以下內容。您必須將更改值=「v3.5」設置爲值=「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網站項目中工作。

你可能會從蒐集額外的觀點:

+0

感謝您的回答。工作很好。 – Tarik 2011-01-11 19:09:00

+1

4igi答案有C#4.0的答案。 – pauloya 2011-10-13 09:32:34

+1

這種方式適用於C#和VB.NET。謝謝! – Corgalore 2013-01-08 18:00:56

9

刪除的web.config

<compilation debug="true" strict="true" explicit="true" targetFramework="4.0" /> 
+0

我沒有看到你,你在我填完礦之前回答了你自己的問題:) – 2010-07-23 00:31:47

+0

是的,但你的是更完整的。 – 2010-07-24 05:28:20

+2

還需要在4.5中刪除。 – James 2013-02-01 16:35:22

27

這應該有助於

<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> 
1

對我來說,這是默認網站下的子站點,雖然默認網站設置設定在ASP.NET 4.0中,web.config文件中設置2.0和3.5。更改web.config文件以使用4.0修復它。 使用此參考:ASP.NET 4 Breaking Changes

+0

在我的情況下,這有很大的幫助,謝謝! – 2016-01-11 07:18:52

25

在我的情況下,我試圖運行使用4.0的子應用程序,但父應用程序仍然需要使用2.0。在父web.config中使用<location path="." inheritInChildApplications="false">標記包裝編譯器信息修復了它。

父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> 
+0

這一個幫助我的情況。我們在服務器上的混合.Net版本沒有任何問題,直到供應商MSI運行。 – 2012-02-13 19:26:56

+1

不錯......這個問題解決了我的問題(ASP.NET 4網站是ASP.NET 2.0的子網站) – 2012-06-05 12:56:00

1

我們不小心複製粘貼的Web.configC:\的Inetpub \ wwwroot的。這個意外複製粘貼的Web.config具有不匹配的配置,並導致我們的compilerVersion錯誤。刪除Web.config解決了我們的問題。