2009-05-23 4 views
5

Vor einer Weile schrieb ich ein kleines Programm in der Microsoft Visual C# 2008 Express Edition. Darin enthalten ist eine Datei namens "ProblemReport.cs" mit eigenen Formular und ProblemReport-Klasse.Wie füge ich eine CS-Datei zu einem vorhandenen C# -Projekt hinzu?

Ich schreibe ein neues Programm und will diesen Code wiederverwenden. (noch arbeiten in MS Vis C# 2008 Express)

In meinem neuen Programm, in der C# Solution Explorer, habe ich rechts auf mein Projekt geklickt und wählte "Add existing item ..." Ich fügte dann ProblemReport.cs, Problembericht hinzu. Designer.cs und ProblemReport.resx.

Welche Stufe (n) fehlt mir hier? Wenn ich zurück in das Hauptformular in meinem neuen Programm gehe und versuche, eine neue Instanz von "ProblemReport" zu instanziieren, erhalte ich die Fehlermeldung:

"Der Typ des Namespacenamens 'ProblemReport' konnte nicht gefunden werden (sind Sie fehlt eine using-Direktive oder ein Assemblyverweis)“

Offensichtlich - ich soll etwas anderes tun, um diese an die Arbeit ... nur nicht sicher, was es ist!

-Adeena

Antwort

9

Stellen Sie sicher, dass alle Ihre CS-Dateien im gleichen Namensraum sind. Klingt so, als würden die importierten nicht mit deinem neuen Projekt leben.

Stellen Sie sicher, dass:

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

    public class ProblemReport 
    { 
    } 

} 

mittlerweile in der anderen CS-Dateien ....

namespace MyProgram 
{ 

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

} 
+0

Das war es ... danke! :) – adeena

+0

Ich denke, diese Antwort braucht mehr Informationen. Die aktuelle Antwort legt nahe, dass sich alles im selben Namensraum befinden muss. Wenn dies der Fall wäre, könnten Sie eine Datei in einem anderen Programm nicht erneut verwenden. –

1

Wenn Sie erstellt es es ist wahrscheinlich, es einen anderen Namespace verwendet werden, wie diejenigen, die aus der erzeugten Projektname standardmäßig.

In der CS-Datei ist der Namespace, dass der Rest des Projekts überein?

2

Sie haben ein „using“ Direktive zu Ihrem neuen Projekt hinzuzufügen -

using ProblemReport; 

Dann sollten Sie in der Lage sein, die ProblemReport Klasse zuzugreifen. Dies hängt natürlich vom Namen des Namespace der ProblemReport.cs-Datei ab.

+0

+1; Ich habe versucht, das Szenario neu zu erstellen und habe die gleiche Nachricht wie adeena erhalten. Durch das Hinzufügen einer using-Anweisung mit dem Namespace für das importierte Formular wurde das Problem behoben. –

4

könnten Sie besser dran ProblemReport in seine eigene Klassenbibliothek (DLL getrennt) Extrahieren, so dass Sie nur eine Kopie des Codes haben.

Erstellen Sie ein neues Klassenbibliotheksprojekt, kopieren ProblemReport.cs, ProblemReport.designer.cs und ProblemReport.resx in das und den Namespace aktualisieren, wie erforderlich. Baue es und lege die DLL irgendwo in die Mitte. Fügen Sie dann einen Verweis auf diese Klassenbibliothek aus Ihren beiden Programmen hinzu.

+0

ja - du hast Recht, dass dies das ist, was ich tun sollte ... und ich könnte ... das Namespace-Problem hat es für jetzt behoben. Der einzige Grund, warum ich das nicht tun würde, ist, dass das Formular, das in meinen beiden Programmen verwendet wird, ein wenig anders sein wird. – adeena

+0

Nun, Sie könnten die Klasse in den gemeinsamen Code und Unterklasse in den Programmen Basis ... – ChrisF

Verwandte Themen