运行 .NET 3.5 的网站不能使用不属于 ISO-2 规范的功能

Posted

技术标签:

【中文标题】运行 .NET 3.5 的网站不能使用不属于 ISO-2 规范的功能【英文标题】:Website running .NET 3.5 cannot use feature not part of ISO-2 specs 【发布时间】:2012-07-09 11:51:27 【问题描述】:

我经常遇到这个错误:

功能“在此处插入功能”不能使用,因为它不是 ISO-2 C# 语言规范

我在一个 .NET 3.5 网站上工作,我已经断断续续地工作了大约两年。在我最近一次更新之前,我从未见过这个错误。我在整个过程中使用了大量的 LINQ 编码,并且我得到了与大部分 LINQ 代码相关的这些错误。根据我所读到的内容,即使我使用的是 .NET 3.5,由于某种原因它认为我使用的是 2.0。但我找不到任何说明如何解决它的内容。

一个问题的例子是,如果我尝试将新项目添加到 App_Code 目录,我没有获得添加 LINQ to SQL dbml 文件的选项。

如果有人能说明我将如何解决这个问题,我将不胜感激。

我无法在构建选项卡下找到“高级”选项。我有一种感觉,这可能是因为它是一个网络应用程序。我查看了 web.config,发现了 2 个可能很重要的部分。大多数东西都引用了 3.5.0.0 或 v3.5。这些设置与没有错误时的 web.config 旧备份一致。顺便说一句,只有智能感知和 VS2010 中的东西给我带来了问题。网站运行正常。

我已经完成了 VS2010 的完全卸载和重新安装,但我仍然遇到同样的问题。我启动了旧安装的 VS2008,但我没有遇到这个问题。但是,我更愿意在这个项目上使用 VS2010。

我在工作电脑上用VS2010打开网站,没有报错。这让我觉得我的笔记本电脑上有什么东西导致了这个问题。如上所述,我完全重新安装了 Visual Studio 2010,但问题仍然存在。这会留下什么?我在 VS 中只安装了一个扩展,它在工作中和我的笔记本电脑上都是一样的。另外,我重装VS后没有重装扩展,问题依旧。

两台 PC 都运行 Win7 Ultimate。已安装 VS2008 和 VS2010。 VS2010 在两者上都安装了相同的扩展。在我的笔记本电脑上,我安装了完整版的 SQL Server 2008,但我的桌面上只安装了 Management Studio(我们办公室里有一台服务器)。 SS2008和它有什么关系吗?

【问题讨论】:

也许您可以检查 web.config 并在 compilation 部分中添加或更改 targetFramework 属性(请参阅 @987654321 中的“配置文件” @) @SimonMourier:来自该链接的关键引用“在面向 .NET Framework 4 或更高版本的项目中,Web.config 文件的编译元素包含一个 targetFramework 属性......”我是该项目的目标是 .NET 3.5。 【参考方案1】:

转到您的项目属性、构建选项卡、高级 - 这应该允许您设置要使用的 C# 版本。它应该默认为您正在使用的 Visual Studio 版本所支持的最新版本,但听起来您在某些时候已将其切换到 ISO-2。

(对于 Windows 项目和类库当然是这样 - 可能在 Web 应用程序中的位置不同。特别是,请查看 Web.config。)

如果这种情况最近才开始发生,我会查看您的源代码管理历史记录,了解对任何配置文件的更改。也尝试新建一个相同类型的项目,看看是否有同样的问题。

【讨论】:

@jwatts1980:如果它运行没问题,听起来执行时配置没问题。您是否通过源代码管理查看任何配置更改?之前一切正常吗? 哈哈!源代码控制。那太好了 :] 说真的,我们在网站上没有任何源代码控制。我们所拥有的只是几个完整的站点备份,其中最新的是 18 个月大。值得一提的是,18 个月前的 web.config 和新的 web.config 之间只有少数区别。而且它们似乎都不是重要的事情。我在更新中列出的部分在 2 个文件中是相同的。 另一位管理员在荷兰。我会给他发一封电子邮件,看看他在过去几个月里是否访问过该网站,以及他是否进行了任何更改。 我的伙伴说他没有对网站进行任何更改,并且他最后一次在那里他没有看到这个错误。由于我在 VS 中通过 FTP 使用它,是否可能是某种缓存错误?或者是否有任何其他设置会让 Visual Studio 认为我正在使用另一种语言规范? 乔恩,今天开始工作后,我正在寻找我正在处理的 Windows 应用程序上的项目属性 > 构建选项卡 > 高级。我找不到它。我已经点击了我可以点击的每个属性选项,但还没有看到“构建”选项卡或“构建任何东西”。我该怎么做?【参考方案2】:

Jon Skeet 的回答大部分是正确的。更新的位置在“属性页面”中,我通过右键单击网站名称,单击属性页面,构建项,然后单击目标框架。

我使用的扩展解决方案导航器有自己的解决方案标题。右键单击它不会给我“属性页”选项。偶然我右键单击了解决方案标题下的网站标题,并出现了“属性页”选项。其中有包含目标框架选项的构建选项卡。

一旦我最终找到目标框架选项,它确实出于某种原因设置为 .NET 2.0。我将其更改为 3.5,重新加载了解决方案,现在效果很好。

感谢一百万乔恩的帮助和时间与我一起工作!

【讨论】:

以上是关于运行 .NET 3.5 的网站不能使用不属于 ISO-2 规范的功能的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 3.5 C# 网站中的 Oledb 溢出错误

.NET 3.5 以外的任何东西都不能在 c# 项目中命中断点

如何在 VS2010 中使用 asp.net 重新配置和编译网站到 Framework 3.5?

.NET 3.5 未能加载文件或程序集“Microsoft.Web.Infrastructure”(解决后追加50-200悬赏)

.NET 3.5 运行时和 .NET 4 运行时兼容性

我可以安全地安装 .Net Framework 3.5 SP1 而不要求我的客户升级他们的 .Net Framework 可分发包吗? (当前运行 3.5)