1

为什么我可以Object Initializers在针对 .NET 2.0 的 Visual Studio 2008 Windows 项目等中使用,但不能在针对 .NET 2.0 的 ASP.NET 项目中使用?

我知道这是 C# 3.0 功能,但不知道 - 为什么这可能在 .NET 2.0 项目中使用。

4

5 回答 5

7

可能是因为针对 2.0 框架的 ASP.Net 东西假定它将以可能必须即时编译一些代码的模式运行。由于它在 2.0 模式下运行,它将在该阶段获得 2.0 编译器(因此任何依赖于 3.0 编译器的东西都会失败)

当从“正常”项目中定位 2.0 代码库时,编译就完成了,因此依赖 3.0 编译器功能就可以了。

于 2009-01-27T14:49:57.577 回答
1

当您以 .NET 2.0 运行时为目标时,您也以 C# 2.0 编译器为目标。那个版本的编译器不理解 3.0 的特性。

于 2009-01-27T14:50:14.473 回答
1

这是一个处理在 .NET 2.0 项目中使用 C# 3.0 功能的现有问题。它解释了哪些 C# 3.0 功能可用,哪些不可用以及如何使用它们。

为了帮助您解决任何特定的困难,我们需要具体的细节。

于 2009-01-27T14:50:25.300 回答
0

关于 C# 中的高级特性以及它们如何从 C# 1.0 发展到 3.0 的最佳信息来源是Jon Skeet 的书。他经常在这里,甚至可能提供一些额外的见解。但是,您确实应该拥有这本书。

于 2009-01-27T14:51:44.750 回答
0

一个普通的 ASP.NET 网站会即时编译,这意味着它将使用可用于您的 Web 服务器上的虚拟目录的编译器。如果设置为 ASP.NET 2.0,它将使用 2.0 编译器(而不是针对 .NET 2.0 的 3.0 编译器)。我假设当您将您的网站转换为 Web 应用程序时,您将能够以 3.0 为目标并且仍然使用 3.0 的一些功能。我建议尝试一下,我会的,但我现在没有时间。让我们知道它是否有效;-)

于 2009-01-27T15:08:46.230 回答