2009-05-23 38 views
5

Jakiś czas temu napisałem mały program w Microsoft Visual C# 2008 Express Edition. Zawierał plik o nazwie "ProblemReport.cs" z własnym formularzem i klasą ProblemReport.Jak dodać plik CS do istniejącego projektu C#?

Piszę nowy program i chcę ponownie użyć tego kodu. (nadal działa w MS Vis C# 2008 express)

W moim nowym programie, w C# Solution Explorer, kliknąłem prawym przyciskiem myszy na moim projekcie i wybrałem opcję "Dodaj istniejący element ..." Następnie dodałem ProblemReport.cs, ProblemReport. designer.cs i ProblemReport.resx.

Których kroków tu brakuje? Po powrocie do głównego formularza w moim nowym programie i próbie utworzenia instancji "ProblemReport" pojawia się komunikat o błędzie:

"Nie można znaleźć typu nazwy obszaru" ProblemReport "(są brakuje ci dyrektywy użycia lub odniesienia do zespołu?) "

Oczywiście - powinienem zrobić coś innego, aby to zadziałało ... po prostu nie jestem pewien co to jest!

-Adeena

Odpowiedz

9

Upewnić się, że wszystkie pliki CS znajdują się w tej samej przestrzeni nazw. Wygląda na to, że importowany (y) nie żyje z nowym projektem.

Upewnij się, że:

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

    public class ProblemReport 
    { 
    } 

} 

tymczasem w innych plików .cs ....

namespace MyProgram 
{ 

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

} 
+0

To było to ... dzięki! :) – adeena

+0

Myślę, że ta odpowiedź potrzebuje więcej informacji. Obecna odpowiedź sugeruje, że wszystko musi znajdować się w tym samym obszarze nazw. W takim przypadku nie można ponownie użyć pliku w innym programie. –

1

Po utworzeniu to jest prawdopodobne, że użyto innej przestrzeni nazw, jak te generowane są z nazwa projektu domyślnie.

W pliku .CS czy przestrzeń nazw jest taka sama jak reszty projektu?

2

Trzeba dodać „używając” dyrektywy do swojego nowego projektu -

using ProblemReport; 

Następnie powinieneś być w stanie uzyskać dostęp do klasy ProblemReport. Oczywiście zależy to od nazwy przestrzeni nazw pliku ProblemReport.cs.

+0

+1; Próbowałem odtworzyć scenariusz i otrzymałem tę samą wiadomość co adeena. Dodanie instrukcji using z obszarem nazw importowanego formularza rozwiązało problem. –

4

Być może lepiej wydobyć ProblemReport do swojej własnej biblioteki klas (oddzielnej biblioteki dll), więc masz tylko jedną kopię kodu.

Utwórz nowy projekt biblioteki klas, skopiuj do niej plik ProblemReport.cs, ProblemReport.designer.cs i ProblemReport.resx i zaktualizuj przestrzeń nazw zgodnie z wymaganiami. Zbuduj i umieść bibliotekę DLL gdzieś w środku. Następnie dodaj odwołanie do tej biblioteki klas z dwóch programów.

+0

tak - masz rację, że właśnie to powinienem zrobić ... i może ... problem z przestrzenią nazw naprawił to na razie. Jedynym powodem, dla którego nie zrobiłbym tego, jest to, że forma używana w obu moich programach będzie trochę inna. – adeena

+0

Cóż, możesz oprzeć klasę na wspólnym kodzie i pod-klasie w programach ... – ChrisF

Powiązane problemy