ASP.NET compilerVersion must be 4.0


問題

ASP.NET 4.0 應用程式,開發時可正常執行,但若部署至測試機,開啟網頁時會出現錯誤:

The value for the 'compilerVersion' attribute in the provider options must be 'v4.0' or later if you are compiling for version 4.0 or later of the .NET Framework. To compile this Web application for version 3.5 or earlier of the .NET Framework, remove the 'targetFramework' attribute from the element of the Web.config file.

原因

此應用程式在部署時,是掛在另一個 ASP.NET 網站之下,成為其子應用程式。雖然兩個應用程式分別使用不同的 app pool,但由於父應用程式係採用 .NET 2.0,其 Web.config 中的編譯組態會繼承下來,影響子應用程式。

解法

如果不能讓兩個應用程式使用同一個 .NET 版本來編譯,可修改父應用程式的 Web.config,停止繼承編譯組態。做法是搜尋檔案中的 <system.codedom> 區段,在此區段之外加一層 <location> 區段,如下所示:

<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>
</location>

Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor