编译器版本与.NET Framework版本 - ASP.NET应用程序的方案

时间:2011-06-16 16:23:37

标签: c# .net asp.net clr compilation

情景:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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