2011-06-16 60 views
5

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

我有VS 2010(C#编译器4)我的客户机上的目标3.5。

我正在开发ASP.NET应用程序。我在类文件中使用可选参数(支持C#4)并编译代码,所有内容似乎都正常工作。

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

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

+0

该函数是从.aspx文件内部还是从该文件的代码隐藏内部调用的? – 2011-06-16 16:34:52

+0

内ASPX文件 – 2011-06-16 16:36:09

回答

3

我认为这与aspx页面(重新编译)在IIS首次加载时编译而不是在Visual Studio中编译有关。这使得它们可以在不需要重新编译的情况下即时更新,但是由于它们是由IIS编译的,因此会带来复杂的问题。

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

  1. 更新到.NET 4
  2. 请勿使用可选参数
  3. 请勿在.aspx文件中调用使用可选参数的代码。我猜如果你将调用移动到代码隐藏文件,它应该可以正常工作,但我没有尝试过。
+0

http://stackoverflow.com/questions/1210679/can-you-use-optional-parameters-in-code-targeting-net-3-5 – 2011-06-16 17:31:07

+0

@亚当我很清楚,你是只要它使用C#4.0编译器,就可以在使用可选参数的同时针对.NET 3.5。我试图做的一点是,虽然你可以在Visual Studio中做到这一点,但我并不知道有一种方法让IIS在使用C#4编译器的同时将.NET 3.5作为动态重编译的.aspx页面。 – Davy8 2011-06-16 17:36:27

+0

确实是+1,因为我应该仔细阅读一下:) – 2011-06-16 17:50:40