Как исправить ошибку "compilerVersion" IIS?
Я получаю это исключение:
System.Configuration.ConfigurationErrorsException: значение для Атрибут compilerVersion в опциях поставщика должен быть "v4.0" или позже, если вы компилируете версию 4.0 или новее .NET. Framework.
Что делать, чтобы разрешить это?
Ответы
Ответ 1
У меня была аналогичная проблема, и мне пришлось указать ASP.NET в конфигурации, чтобы использовать компилятор 3.5 следующим образом, изменив Web.config
.
Я скопировал и вставил следующее из своего кода. Вы должны изменить 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>
В моем случае вместо 3.5 использовался компилятор 2.0. Я работал в проекте IIS 7, ASP.NET Website.
Вы можете получить дополнительную информацию:
Ответ 2
это должно помочь
<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>
Ответ 3
В моем случае я пытался запустить дочернее приложение с использованием 4.0, но родительское приложение должно было использовать 2.0. Обертка информации компиляторов в родительском web.config с тегом <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>
Ответ 4
Удалить этот раздел из web.config
<compilation debug="true" strict="true" explicit="true" targetFramework="4.0" />
Ответ 5
В моем случае это был дочерний сайт под сайтом по умолчанию, и хотя настройки веб-сайта по умолчанию были установлены в ASP.NET 4.0, файл web.config был установлен для 2.0 и 3.5. Изменение файла web.config для использования 4.0 исправил его.
Используйте это для справки: ASP.NET 4 Нарушение изменений
Ответ 6
Мы случайно скопировали Web.config в C:\inetpub\wwwroot. Этот случайно скопированный в Web.config экземпляр несовместил конфигурацию и вызвал ошибку compilerVersion для нас. Удаление Web.config решило проблему для нас.
Ответ 7
В моем случае я использую старый веб-сайт (V 2.0), необходимо добавить новое приложение, разработанное в MVC4.0. С той же ошибкой, с которой я столкнулся, и после многих перестановок и комбинаций данного решения я поместил весь web.comfig родительского приложения в следующий тег
<location path="." inheritInChildApplications="false">
...... web config tags here........
</location>