2012-08-24 22 views
7

Tengo el proyecto asp.net (en .NET 2.0) y he convertido el proyecto a .net 4.0. Después de construir el proyecto con éxito, que puso en marcha la página web en el navegador, que arroja el error de la siguiente manera:BC30560: 'ExtensionAttribute' es ambiguo en el espacio de nombres 'System.Runtime.CompilerServices'

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30560: 'ExtensionAttribute' is ambiguous in the namespace 'System.Runtime.CompilerServices'.

Source Error:

[No relevant source lines]

Source File: InternalXmlHelper.vb Line: 9

........

Por favor, dame una idea para solucionarlo.

+0

¿Hiciste alguna copia de seguridad de dll anterior en tu carpeta bin? –

Respuesta

6

Un truco común para usar métodos de extensión (para LINQ, etc.) en .NET 2 con el compilador C# 3 (o superior) era definir su propio atributo ExtensionAttribute en el espacio de nombres correcto.

Ahora que se ha actualizado a una versión posterior de .NET, necesita eliminar este atributo adicional ahora redundante. Encuentra dónde está definido en tu código y elimínalo. También busque bibliotecas externas como LINQBridge; ya no necesitará esto.

Una forma de encontrarlo sería usar el buscador de objetos y buscar ExtensionAttribute.

2

Tuve exactamente el mismo error, y lo que me solucionó fue eliminar los temas (en App_Themes). No he intentado volver a agregar los temas para ver si funcionarán todavía, pero eliminar eso solucionó el error, al menos.

Tenga en cuenta que descubrí que eran los Temas los que causaban esto al observar los detalles del compilador en el error, y señalando que los únicos archivos .vb que estaba compilando estaban relacionados con los temas (autogenerados). Mi proyecto es todo C#, por lo que el error proveniente de VB me hizo buscar los archivos .vb.

0

Este error también se debe a que no tiene la directiva de página en la parte superior de su archivo aspx. Esta es la razón por la que se utiliza el compilador de VB.

Escribe al principio:

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

tuve este error. Simplemente reiniciar Visual Studio lo hizo desaparecer.

0

Este error también se produce en las aplicaciones web ASP.NET MVC si utiliza una extensión de archivo incorrecta para sus vistas o parciales.

Inadvertidamente creé una vista usando una extensión incorrecta (.ascx en lugar de .cshtml) y recibí este mensaje de error.

Al cambiar la extensión a .cshtml se solucionó el problema.

4

Así fue como encontré el problema.

Otra manera fácil de verificar: en su código, use temporalmente la clase en alguna parte. Ejemplo:

System.Runtime.CompilerServices.ExtensionAttribute x = null; 

Cuando la construcción, esto generará error:

El tipo

'System.Runtime.CompilerServices.ExtensionAttribute' exists in both 'c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'

y .....

Y le mostrará inmediatamente las 2 fuentes que causan el conflicto .

+0

Esto debería estar en la parte superior. La manera más rápida y sencilla de encontrar el origen del problema. – Amal

Cuestiones relacionadas