2012-03-29 14 views
10

Independientemente de si la configuración web raíz de mi máquina (la de Windows/Microsoft.NET/...) contiene system.web/pages/namespaces/add elementos, todavía se exige que incluya el uso de instrucciones encima de cada archivo aspx.cs CodeBehind. ¿Por qué? ¿No debería compilar y no quejarse de que no puede entender qué es una página? ¡Después de todo, <add namespace="System.Web" /> existe en la raíz web.config!¿Cuál es el punto del Web.config's system.web/Pages/Namespaces Tag?

+0

¿Se compilará con quejas falsas o no se compilará? VS siempre ha tenido problemas con los espacios de nombres de control agregados a webconfig, sin embargo, en la mayoría de los casos, todo se compila y funciona correctamente ... –

+0

No compila. En un sistema donde el código del servidor reside en el archivo CodeBehind, realmente hay un valor cero para esta sección de configuración web en particular. – JonathanWolfson

Respuesta

9

El elemento system.web/pages/namespaces/add es para .ASPX archivos, archivos normales .CS (incluyendo .ASPX.CS) todavía tienen que hacer using adecuada ya que no hay pre-procesamiento de la fuente antes de la compilación. Por lo tanto, .ASPX.CS debe ser un archivo CS válido que incluya todas las declaraciones using Namespace.

+0

hola, ¿me puede explicar más sobre el 'preprocesamiento'? cómo interactúan los archivos .aspx con la directiva 'system.web/pages/namespaces' (o [@import]) durante 'preprocesamiento'. Gracias. – pinopino

+0

@pinopino - si tiene alguna pregunta, por favor pregunte la nueva (y si está haciendo una pregunta aclaratoria - de hecho enlace al original). No estoy muy seguro de qué desea aprender sobre el procesamiento previo en relación con ASP.Net ya que no hay ninguno. Es posible que desee comenzar con [wikipedia - Preprocesador] (http://en.wikipedia.org/wiki/Preprocessor_%28programming%29). –

7

Esto agrega espacios de nombres a sus archivos aspx y ascx para que no tenga que incluir declaraciones <%@ Import Namespace="MyNameSpace" %>.

Desde el documentation on MSDN:

El elemento de espacios de nombres define una colección de directivas de importación a uso durante el montaje pre-compilación. Este atributo corresponde a la directiva @ Import en una página ASP.NET. La directiva @ Import permite especificar espacios de nombres que se importan automáticamente en todas las páginas de una aplicación.

Su código subyacente no se ve afectado por estas entradas de web.config.

+0

Esto es lo que he encontrado, con respecto a VB.NET. En una de mis máquinas no puedo construir y en otra puedo. Entonces, fui a la pantalla y veo: Esto puede compilar: "Microsoft Visual Basic 2010 01019-532-2002102-70462". Esto no puede: "01019-532-2002102-70649". Espero eso ayude. –

5

Las otras respuestas aquí indican que este ajuste de web.config solo afecta a las páginas ASPX, y no a las páginas de código subyacente como ASPX.CS. Acabo de probar esto en un sitio web ASP.NET que apunta a .NET 4.0, y he descubierto que esto es cierto para las páginas C#, pero no para las páginas VB.

Al agregar un espacio de nombres en la configuración de web.config, se eliminó el requisito de enumerarlo en la parte superior de cada página ASPX.VB.

Me interesaría cualquier teoría sobre por qué esto podría ser. Pensé que funcionaría para los códigos ASPX.CS y ASPX.VB detrás de los archivos.

Cuestiones relacionadas