【发布时间】:2010-10-03 18:37:44
【问题描述】:
为什么我可以在面向 .NET 2.0 的 Visual Studio 2008 Windows 项目等中使用 Object Initializers,但不能在面向 .NET 2.0 的 ASP.NET 项目中使用?
我知道这是 C# 3.0 的功能,但不知道 - 为什么这可以在 .NET 2.0 项目中使用。
【问题讨论】:
标签: c# asp.net object-initializers
为什么我可以在面向 .NET 2.0 的 Visual Studio 2008 Windows 项目等中使用 Object Initializers,但不能在面向 .NET 2.0 的 ASP.NET 项目中使用?
我知道这是 C# 3.0 的功能,但不知道 - 为什么这可以在 .NET 2.0 项目中使用。
【问题讨论】:
标签: c# asp.net object-initializers
可能是因为针对 2.0 框架的 ASP.Net 东西假定它将以可能必须即时编译某些代码的模式运行。由于它是在 2.0 模式下运行的,它会在那个阶段获得 2.0 编译器(因此任何依赖 3.0 编译器的东西都会失败)
当从“普通”项目定位 2.0 代码库时,编译完成,因此依赖 3.0 编译器功能就可以了。
【讨论】:
当您以 .NET 2.0 运行时为目标时,您也以 C# 2.0 编译器为目标。那个版本的编译器不理解 3.0 的特性。
【讨论】:
这是一个现有的question,它处理在 .NET 2.0 项目中使用 C# 3.0 功能。它解释了哪些 C# 3.0 功能可用,哪些不可用以及如何使用它们。
为了帮助您解决任何具体困难,我们需要具体细节。
【讨论】:
有关 C# 高级特性以及它们如何从 C# 1.0 发展到 3.0 的最佳信息来源是 Jon Skeet's book。他经常在这里,甚至可能提供一些额外的见解。但是,您确实应该拥有这本书。
【讨论】:
一个普通的 ASP.NET 网站会即时编译,这意味着它将使用可用于您的 Web 服务器上的虚拟目录的编译器。如果设置为 ASP.NET 2.0,它将使用 2.0 编译器(而不是针对 .NET 2.0 的 3.0 编译器)。 我假设当您将您的网站转换为 Web 应用程序时,您将能够以 3.0 为目标并且仍然使用 3.0 的一些功能。我建议尝试一下,我会的,但我现在没有时间。让我们知道它是否有效;-)
【讨论】: