2011-02-15 20 views
5

Tengo una clase muy simple que se encuentra dentro de mi carpeta App_Code en mi proyecto de aplicación web VS2008. Estoy intentando crear una instancia de esta clase de mi archivo de código subyacente. Intellisense no parece estar viendo mi clase y no estoy seguro de por qué. Estoy usando VB.NET, que no estoy tan familiarizado con C#. Quizás me estoy perdiendo algo. Apuesto a que tiene algo que ver con algo que me falta en VB.NET.No puedo acceder a mi clase desde código subyacente. Class es la carpeta App_Code

Aquí es mi clase simple (para la prueba):

Public Class mySimpleClass 

    'Private member variables whose data is obtained from user input 
    Private mUserID as String 

    'Class Properties 
    Public Property UserID() as Integer 
     Get 
      Return mUserID 
     End Get 

     Set(ByVal Value as Integer) 
      mUserID = Value 
     End Set 
    End Property 

    'Class Methods 
    Public Function DisplayUserID() as String 
     Return this.UserID 
    End Function 

End Class 

Aquí es cómo lo intente una instanciarlo desde el código subyacente ...

Partial Public Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim obj As New mySimpleClass() 
    End Sub 

End Class 
+0

Genere la solución y vuelva a intentarlo puede ayudar. – Anuraj

+0

@Anuraj - Intenté esto y no tuve suerte. Todavía dice que mi clase no es reconocida. Pensé que al colocarlos en la carpeta App_Code, cualquier clase estaría disponible. Tuve que crear manualmente la carpeta App_Code. ¿Eso importa? – webworm

Respuesta

11

Lo que terminé haciendo fue eliminar mi carpeta App_Code y crear una nueva carpeta "AppCode". También seleccioné propiedades para el archivo de clase y establecí la propiedad de Acción de compilación en "Compilar". Una vez que hice eso y volví a compilar el proyecto, apareció mi clase.

+3

¡Gracias! No tuve que eliminar una carpeta, solo tuve que configurar los archivos de clase .vb Acción de Buld para 'Compilar'. Por qué VS lo configuró para 'Contenido' cuando está en App_Code No sé ... –

+0

Nunca había visto esto antes, especialmente como desarrollador de C#, pero me topé con esto en una empresa a la que consulté un poco . Utilizan VB ... esta respuesta resolvió mi problema ... por alguna razón, todas las clases nuevas se configuraron como "contenido" en lugar de "compilar" para la acción de creación. – tjans

+0

Acabo de grabar un par de horas tratando de crear métodos de extensión en un módulo agregado al proyecto con Proyecto> Nuevo elemento> Módulo. Probé el espacio de nombre explícito, explícito 'Público', pero nada funcionó. Normalmente trabajo en C#, pero tengo algo de experiencia en VB, así que estaba completamente atónito de por qué esto no estaba funcionando. Resulta que el problema fue como lo indica la respuesta: el archivo del módulo (un archivo de código) fue agregado por VS con Build Action = Content. ¡¿WTF ?! –

1
  1. debe cambiar Return this.UserID a Return Me.UserID (VB.Net ;-))
  2. reconstruya la solución y vea si funciona

No estoy tan familiarizado con la carpeta app_code y los sitios web en general, siempre estoy usando aplicaciones web. Sugeriría también a convert it to a WebApplication, aquí hay más información por qué: ASP.NET Web Site or ASP.NET Web Application?

+0

Gracias por la corrección en "esto" frente a "mí". :) – webworm

1

En realidad, creo que si agrega espacio de nombres a su proyecto, debería funcionar también. Parece que recuerdo haber tenido ese problema de vez en cuando en C# asp.net también. Podría estar equivocado aunque

0

Estoy de acuerdo con Gustyn (más o menos). Agregar un "uso de espacio de nombres"; línea de código del formulario Web detrás

de Dave

0

ir a cada archivo que contiene la clase "público" (es) en la carpeta "App_Code" y el establecimiento de Acción de generación de contenido para compilar hará el truco. Funciona para proyectos de tipo Aplicación web. Todo lo relacionado con el uso de un módulo (VB) o espacio de nombres o estática (C#) no será de ayuda hasta que configure los archivos de clase para compilar (sin importar en qué carpeta se encuentren).

Cuestiones relacionadas