编译器版本与.NET Framework版本 – ASP.NET应用程序的场景

场景:

我的VS 2010(C#4编译器)在我的客户端计算机上以3.5为目标。

我正在开发ASP.NET应用程序。 我在类文件中使用可选参数(支持C#4)并编译代码,看起来一切正常。

稍后在运行时发现的一个问题,旧的(经典的我相信)ASPX正在使用该function。 没有函数只接受x参数,其中x比可选参数小1是运行时错误。

这是否意味着普通类,并且使用客户端的C#编译器,而视图(aspx)等使用服务器上的编译器 – 因此如果在视图/表单文件中使用C#4会导致问题?

我相信这与aspx页面在IIS首次加载时(重新?)编译而不是在Visual Studio中编译的事实有关。 这允许它们在不重新编译的情况下即时更新,但是由于它们是由IIS编译的,因此它带来了您所看到的复杂性。

我不知道有一种方法让IIS使用C#4编译器但编译到.NET 3.5,所以看起来你唯一的选择是:

  1. 更新到.NET 4
  2. 不要使用可选参数
  3. 不要调用在.aspx文件中使用可选参数的代码。 我猜你是否将调用移到代码隐藏文件它应该工作正常,但我没有尝试过。