En la misma solución, tengo dos proyectos: P1 y P2. ¿Cómo puedo hacer uso de una clase de P1 en P2?
c#
visual-studio
Strider007
fuente
fuente
Respuestas:
Simplemente agregue una referencia a P1 desde P2
fuente
Tenga en cuenta que los tipos en P1 a los que desea acceder directamente deben tener un nivel de acceso suficiente: por lo general, esto significa que deben hacerse públicos.
fuente
Paul Ruane tiene razón, acabo de intentar construir el proyecto. Acabo de hacer un SLN completo para probar si funcionaba.
Hice esto en VC # VS2008
<< (Solo ayudando a otras personas que lean esto también con () comentarios)
Paso 1:
Hacer una solución llamada DoubleProject
Paso 2:
Haga un proyecto en la solución llamada DoubleProjectTwo (para hacer esto, seleccione el archivo de la solución, haga clic con el botón derecho -> Agregar -> Nuevo proyecto)
Ahora tengo dos proyectos en la misma solución.
Paso 3:
Como dijo Paul Ruane. vaya a las referencias en el explorador de soluciones (si está cerrado, está en la pestaña de vista del compilador). DoubleProjectTwo es el que necesita funciones / métodos de DoubleProject, por lo que en DoubleProjectTwo la referencia del mouse derecho allí -> Agregar -> Proyectos -> DoubleProject.
Paso 4:
Paso 5:
Eso debería hacer el truco
Espero que esto ayude
EDITAR ::: olvidé la llamada al método para cambiar realmente la cadena, no hagas lo mismo :)
fuente
Con demasiada frecuencia, un nuevo desarrollador hace esta simple pregunta, que es un problema común específicamente con los IDE de Visual Studio. Pocas personas responden a la pregunta específica ya menudo critican la pregunta o dan "suposiciones" para soluciones que no responden a los problemas comunes. El primer problema común es que el IDE lo lleva a crear nuevos proyectos en lugar de agregar nuevos archivos (.java, .py, .cpp, .c) a la solución existente (de manera predeterminada crea una nueva solución) a menos que cambie el nombre del proyecto y agregar a la solución actual. Este problema ocurre para las carpetas de proyectos de Python, java, c #, C ++ y C.
Esto no sucede cuando agrega otro proyecto usando los nuevos> proyectos> comandos de tipo de proyecto del IDE. El problema aquí es que el nuevo proyecto está almacenado en un directorio diferente al de los archivos de código de interfaz de usuario o cliente existentes. Para crear un nuevo "archivo" en el mismo espacio del proyecto en lugar de un nuevo proyecto, el principiante debe hacer lo siguiente que Microsoft no hará por usted e incluso lo desviará de lo intuitivamente obvio por defecto.
AHORA, las recomendaciones de código para importar bibliotecas o usar espacios de nombres funcionarán como se describe en los comentarios anteriores y no tiene que cambiar las instrucciones de ruta o cambiar las rutas de las soluciones y los nombres de las soluciones que Microsoft no le permitirá cambiar fácilmente (es decir, puede cambiar el nombres de archivos o nombres de proyectos, pero el IDE no cambiará automáticamente la ruta del proyecto o los nombres de la ruta de la solución).
El siguiente es un ejemplo de Python, pero funciona de manera similar para C #, java o C / C ++ usando los espacios de nombres, las inclusiones o los comandos de código apropiados para cada lenguaje para encontrar código en otras clases / proyectos en el MISMO ESPACIO DE DIRECTORIO.
El archivo de la aplicación "hola mundo" se importa desde otros archivos de código en el mismo directorio.
Tenga en cuenta que los delimitadores de espacios en blanco de Python no se van a espaciar correctamente en este editor de comentarios de stackoverflow:
El archivo de biblioteca o archivo de "fachada" que contiene las clases, métodos o funciones que desea importar.
AHORA, ¿cómo resuelves realmente el lío al que te lleva el IDE? Para importar código de otro archivo en el mismo espacio de directorio, agregue una referencia.
Bien, ahora que tiene este problema resuelto, ¿cómo puede realmente vincular dos proyectos separados en el mismo espacio de solución?
Microsoft realmente necesita solucionar estos problemas para que pueda crear intuitivamente lo que la mayoría de la gente quiere crear como archivos nuevos en los mismos directorios y eliminar soluciones seleccionándolas y eliminándolas del IDE. Los principiantes se sienten tan frustrados con las declaraciones de ruta de directorio tan flexibles para los desarrolladores experimentados, pero tan injustas para los nuevos desarrolladores en sus valores predeterminados.
Espero que esto realmente les ayude a los nuevos y evite que los desarrolladores experimentados le den las respuestas incorrectas que no funcionan para usted. Asumen que ya entiende las declaraciones de ruta y solo quiere escribir el código correcto ... que también es la razón por la que el túnel intenta corregir su código pero no lo ayuda a solucionar el problema. Este es probablemente el problema más común que se describe continuamente en stackoverflow con respuestas incorrectas que no funcionan para los nuevos programadores.
fuente
El primer paso es hacer P2 referencia P1 haciendo lo siguiente
A continuación, deberá asegurarse de que las clases en P1 sean accesibles para P2. La forma más sencilla es hacerlos
public
.Ahora debería poder usarlos en P2 a través de su nombre completo. Suponiendo que el espacio de nombres de P1 es Project1, lo siguiente funcionaría
Sin embargo, la forma preferida es agregar un uso para
Project1
que pueda usar los tipos sin calificaciónfuente
Si tiene dos proyectos en una carpeta de solución, simplemente agregue la Referencia del Proyecto en otra. Usando el Espacio de Nombres puede obtener las clases. Al crear el objeto para eso, la clase requerida. Llame al método que desee.
Primer proyecto:
Añada aquí una referencia al Segundo Proyecto.
Segundo proyecto:
fuente
En el proyecto P1, haga pública la clase (si aún no lo está). Luego agregue una referencia de proyecto (en lugar de una referencia de archivo, un error con el que me he encontrado ocasionalmente) a P2. Agregue una instrucción using en P2 en el lugar correcto y comience a usar la clase de P1.
(Para mencionar esto: la alternativa a hacer pública la clase sería hacer de P2 un amigo de P1. Sin embargo, es poco probable que esta sea la respuesta que está buscando, ya que tendría algunas consecuencias. Por lo tanto, siga la sugerencia anterior).
fuente
Digamos que su clase en el proyecto 2 se llama MyClass.
Obviamente, primero haga referencia a su proyecto 2 en las referencias en el proyecto 1 y luego
así que cuando quiera hacer referencia a esa clase, escriba project2Class. Además, asegúrese de que la clase también sea pública.
fuente
Tuve un problema con diferentes marcos de destino.
Estaba haciendo todo bien, pero no podía usar la referencia en P2. Después de establecer el mismo marco de destino para P1 y P2, funcionó a la perfección.
Espero que ayude a alguien
fuente
The name ... does not exist in the current context. Cannot resolve symbol ...
hasta que cambié los marcos de destino de los proyectos para que coincidieran. (Haga clic con el botón derecho en el proyecto y vaya aProject -> Properties -> Target framework
para cambiar esto.)