我在HttpRequest上有一个扩展方法,我试图在不同的aspx页面上使用内联。
尽管我已经向aspx添加了正确的导入,但我得到一个错误,说该方法不存在。扩展方法适用于后面的代码。
编译器错误消息:CS0117:'System.Web.HttpRequest'不包含...的定义
为了解决这个问题,我不得不添加这个web.config声明
<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>
我发现here但我不知道为什么我需要这个声明。
我不确定是什么,我担心它可能会产生一些副作用。
你知道为什么我需要这个声明以及如何避免它吗?
答案 0 :(得分:2)
.NET 3.5中引入了扩展方法。默认情况下,内联代码使用CompilerVersion v2.0编译。您需要添加指定的块以指示运行时编译.NET 3.5中引入的语言功能,因此CompilerVersion值为“v3.5”。
问题是ASP.NET特有的,因为扩展方法在CLR 2.0编译器下的普通应用程序中编译。