2009-05-23 30 views
5

Hace un tiempo escribí un pequeño programa en Microsoft Visual C# 2008 Express Edition. Incluía un archivo llamado "ProblemReport.cs" con su propio formulario y clase ProblemReport.¿Cómo agrego un archivo cs a un proyecto existente de C#?

Estoy escribiendo un programa nuevo y quiero volver a utilizar este código. (sigue trabajando en MS Vis C# 2008 express)

En mi nuevo programa, en C# Solution Explorer, hice clic derecho en mi proyecto y elegí "Agregar elemento existente ..." Luego agregué ProblemReport.cs, ProblemReport. designer.cs y ProblemReport.resx.

¿Qué paso (s) me falta aquí? Cuando vuelvo al formulario principal en mi nuevo programa y trato de instanciar una nueva instancia de "ProblemReport", aparece el mensaje de error:

"No se pudo encontrar el tipo de nombre del espacio de nombres 'ProblemReport' (son ¿falta una directiva using o una referencia de ensamblado?) "

Obviamente, se supone que debo hacer algo más para que esto funcione ... ¡pero no estoy seguro de qué se trata!

-Adeena

Respuesta

9

Asegúrese de que todos los archivos de CS están dentro del mismo espacio de nombres. Parece que los importados no están viviendo con su nuevo proyecto.

Asegúrese de que:

namespace MyProgram //same as the rest of your project 
{ 

    public class ProblemReport 
    { 
    } 

} 

mientras que en los demás archivos .cs ....

namespace MyProgram 
{ 

    public class SomeClass 
    { 
      public void DoSomething() 
      { 
       ProblemReport. //you should get intellisense here. 
      } 
     } 

} 
+0

Eso fue todo ... ¡gracias! :) – adeena

+0

Creo que esta respuesta necesita más información. La respuesta actual sugiere que todo tiene que estar en el mismo espacio de nombres. Si este fuera el caso, entonces no podría volver a utilizar un archivo en otro programa. –

1

cuando lo creó lo más probable es que utiliza un espacio de nombres diferentes, como los que se generan a partir de la nombre del proyecto por defecto.

En el archivo .CS, ¿el espacio de nombres coincide con el del resto de su proyecto?

2

hay que añadir un "uso" directiva para su nuevo proyecto -

using ProblemReport; 

, entonces debería ser capaz de acceder a la clase ProblemReport. Por supuesto, esto depende del nombre del espacio de nombres del archivo ProblemReport.cs.

+0

+1; Traté de recrear el escenario y recibí el mismo mensaje que adeena. Agregar una instrucción using con el espacio de nombres para el formulario importado solucionó el problema. –

4

Es mejor que extraiga ProblemReport en su propia biblioteca de clases (dll por separado) para que solo tenga una copia del código.

Cree un nuevo proyecto de biblioteca de clases, copie ProblemReport.cs, ProblemReport.designer.cs y ProblemReport.resx en eso y actualice el espacio de nombres según sea necesario. Constrúyelo y ponga el dll en algún lugar central. A continuación, agregue una referencia a esta biblioteca de clase de sus dos programas.

+0

sí, tienes razón en que esto es lo que debería hacer ... y podría ... el problema del espacio de nombres lo solucionó por ahora. La única razón por la que no haría esto es porque el formulario utilizado en mis dos programas será un poco diferente. – adeena

+0

Bueno, podrías basar la clase en el código común y la subclase en los programas ... – ChrisF

Cuestiones relacionadas