9

我有 asp.net 项目(在 .net 2.0 中),我将项目转换为 .net 4.0。在我成功构建项目后,我在浏览器上启动了网站,它抛出了如下错误:

编译错误

说明:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:BC30560:“ExtensionAttribute”在命名空间“System.Runtime.CompilerServices”中不明确。

源错误:

[没有相关的源代码行]

源文件:InternalXmlHelper.vb 行:9

...........

请给我一些想法来解决它。

4

7 回答 7

7

在 .NET 2 和 C# 3(或更高版本)编译器中使用扩展方法(用于 LINQ 等)的一个常见技巧是在正确的命名空间中定义您自己的 ExtensionAttribute。

现在您已经升级到更高版本的 .NET,您需要删除这个现在冗余的额外属性。找到它在您的代码中定义的位置并将其删除。还要检查像 LINQBridge 这样的外部库——你不再需要这个了。

找到它的一种方法是使用对象浏览器并搜索 ExtensionAttribute。

于 2012-08-24T07:58:19.277 回答
5

这就是我发现问题的方式。

另一种简单的验证方法:在您的代码中,在某处临时使用该类。例子:

System.Runtime.CompilerServices.ExtensionAttribute x = null;

在构建时,这将产生错误:

类型

'System.Runtime.CompilerServices.ExtensionAttribute' 存在于两个'c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'

和 .....

并立即向您展示导致冲突的 2 个来源。

于 2016-01-07T18:11:15.243 回答
2

我遇到了同样的错误,为我解决的问题是删除主题(在 App_Themes 下)。我还没有尝试重新添加主题以查看它们是否可以工作,但删除它至少可以修复错误。

请注意,我通过查看错误中的编译器详细信息发现它是导致此问题的主题,并注意到它正在编译的唯一 .vb 文件与主题(自动生成)相关。我的项目都是 C#,所以来自 VB 的错误让我寻找 .vb 文件。

于 2013-05-23T15:47:16.203 回答
1

我遇到了这个问题,下面列出了对我有用的方法。

线索是错误消息提到InternalXmlHelper.vb. 我是 C# 程序员,为什么要提到 VB 组件?

如果您没有明确说明 ASPX 页面的编译语言,则可能会出现此问题。如果您没有明确说明,那么 IIS 将以该站点的默认语言进行编译。如果你是用 C# 写的,没有明确说明编译语言,而 IIS 中默认的编译语言是 C#,那么快乐的日子。但是,如果 IIS 中的默认编译语言设置为 vb(默认情况下似乎是这样),那么您的 C# 页面将像 vb 一样被编译,并且您会收到 BC30560 错误。

最好的解决方法是明确说明您的 aspx 页面的编译语言,方法是在每个 aspx 页面的顶部放置这样的指令:

<%@ Page Language="C#" %>

或者,您可以让您的页面不明确(没有页面语言指令)并告诉 IIS 使用什么作为默认编译语言,如下所示:

使用 IIS 管理器 -> 查看您网站的根目录(这将是您的服务器名称),然后 -> 在 ASP.NET 部分 -> 双击 .NET 编译图标(蓝色向下箭头) -> 在常规标题下的设置列表是默认语言的设置 -> 将此设置为c#

如果需要,您还可以设置每个网站的默认语言。与上面相同,但将其设置为左侧 IIS 树视图的根下方的网站,而不是它的根。请注意,如果您为网站设置 default-language=c#,则该设置将存储在web.config您网站的根目录中 - 在该<system.web>部分中,您将具有如下值:<compilation debug="false" defaultLanguage="c#" />. 如果您在 中删除或覆盖该设置web.config,它将恢复为 IIS 实例的默认设置。

于 2018-04-17T16:31:18.453 回答
0

我有这个错误。只需重新启动 Visual Studio 即可让它消失。

于 2014-03-08T18:58:17.083 回答
0

如果您对视图或局部视图使用不正确的文件扩展名,则此错误也会发生在 ASP.NET MVC Web 应用程序中。

我无意中使用不正确的扩展名(.ascx 而不是 .cshtml)创建了一个视图,并收到了此错误消息。

将扩展名更改为 .cshtml 解决了该问题。

于 2014-03-13T16:25:02.260 回答
0

此错误也是因为您的 aspx 文件顶部没有 page 指令。这就是使用VB编译器的原因。

把它写到顶部:

<%@ Page Language="C#" %>
于 2013-06-24T10:42:55.747 回答