【问题标题】:Compiler Version vs. NET Framework Version - Scenario with ASP.NET applications编译器版本与 NET Framework 版本 - 使用 ASP.NET 应用程序的场景
【发布时间】:2011-06-16 16:23:37
【问题描述】:

场景:

我的客户端机器上有针对 3.5 的 VS 2010(C# 4 编译器)。

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

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

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

【问题讨论】:

  • 函数是从 .aspx 文件内部调用的,还是从该文件的代码隐藏内部调用的?

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


【解决方案1】:

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

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

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

【讨论】:

  • @Adam 我很清楚,只要使用 C# 4.0 编译器,您就可以在面向 .NET 3.5 时使用可选参数。我试图说明的一点是,虽然您可以在 Visual Studio 中执行此操作,但我不知道有一种方法可以让 IIS 在动态重新编译 .aspx 页面时使用 C#4 编译器,同时针对 .NET 3.5 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2018-08-11
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多