Assembly - Verweis ?

zarrandreas

Mitglied
Ich habe ein neues Projekt in dem Ordner mit vorhandenem Code gemacht und dann das vorhandene Code in dem Projektmanager zum Projekt hinzugefügt.

Meine Frage ich kriege ein Compilierfehler wenn ich mit folgender Syntaks von einer Klasse ableite

Code:
namespace Maschine.Automat.States
{

	public abstract class State: Maschine.Interfaces.IState {
…..

Compiler- Fehler

Der Typ oder Namespacename 'Interfaces' ist in der Klasse oder dem Namespace 'Maschine.Maschine' nicht vorhanden (fehlt ein Assemblyverweis?)

Assembly- Verweis ist doch “using …“ oder?
Und wo nimmt der Compiler 'Maschine.Maschine'. Ich habe blos ein Haupt namespace Maschine und nicht zwei.

Übrigens das Programm soll einen Endautomat simulieren, falls jemand ein Tutorial oder sdk für die Realisierung eines Endautomates empfehlen kann, dann bitte posten.

Übrigens folgende Code verursacht kein Fehler (bewirkt aber gleiche)
Ich benutze aber Together für VSNET und das Programm erzeugt das obere Code, d.h ich muss dann überall im code die Veränderung vornehmen
Code:
using Maschine.Interfaces;

namespace Maschine.Automat.States
{

	public abstract class State: IState {
…..

Woran kann das liegen? muss ich villeicht irgendwo in VSNET irgendwelche Einstellungen vornehmen?
 
Hi,

wenn sich der Namespace Maschine.Interfaces in einer anderen Assembly befindet, so musst du diese deinem aktuellen Projekt hinzufügen.
Das kannst du im Solution Explorer auf der rechten Seite machen.
Rechtsklick mit der Maus auf References, Add References auswählen und auf deine Assembly verweisen.

Gruß,
The laughing man
 
Hallo zarrandreas!
zarrandreas hat gesagt.:
Assembly- Verweis ist doch “using …“ oder?
*trommelwirbel* :D
Nein, ein Assembly-Verweis ist die Referenz die Du auf die DLL in deiner IDE einstellst.
Mit using bindest Du lediglich die Namespaces ein die sich in der DLL befinden. ;)

Maschine.Interfaces ist doch eine ganz anderer Namespace als Maschine.Automat.States.
Der Compiler denkt jetzt nämlich das Maschine.Interfaces.IState eine Klasse von Maschine.Automat.States ist,
weil der Namespace nicht mit using eingebunden wurde in dem sich die Klasse befindet.
Und da er sich der Namespace Maschine.Interfaces garantiert nicht mit in der *.cs befindet, wo Maschine.Automat.States drinn steht,
musst Du ihn auch mit using einbinden.

Verwirrend was? :D Aber ich hoffe es hilft. :)

MfG, cosmo
 
Das ist alles mein Code, also das ist kein Assebly, aber mit using das habe ich schon so vermutet, jetzt weiss ich es.
Ich denke das liegt an Projekteinstellungen.
Trotztdem Danke für deien Antwort.
 
Das ist alles mein Code, also das ist kein Assebly
[...]
Ich denke das liegt an Projekteinstellungen.
Warum denkst Du das man nur Namespaces aus Assemblies einbinden muss? :confused:

Das ist unlogisch. ;)

ALLE Namespaces aus deinem Projekt sind auch mit einzubinden wenn die sich nicht mit in der gleichen *.cs-Datei untereinander befinden.
Woher soll der Compiler sonst wissen wo er suchen soll?
Ich hoffe Du erstehst es jetzt. :)
 
Ich verstehe nicht, Ich habe mehrere .cs Dateien, es ist alles mein Code, also ich benutze keine Bibliotheken(.dll). Was meinst mit

ALLE Namespaces aus deinem Projekt sind auch mit einzubinden wenn die sich nicht mit in der gleichen *.cs-Datei

kann ich die .cs Dateien etwa anderes als in ProjektMape einbinden. Übrigens dieser Code

Code:
namespace Maschine.Automat.States
{

	public abstract class State: Maschine.Interfaces.IState {
…..
verursacht keine Fehler wenn ich ein neues Projekt mache und dann die Ordner Struktur in c# mache. Das Fehler tritt erst ein wenn ich die Order Struktur inklusive .cs Dateien iin das Projekt einbinde.

Kommisch, Falls du dazu was sagen kannst....

Inzwischen habe ich ein neues Projekt gemacht und .cs Dateien in VSNET neuerstellt und code da rein kopiert. Es funktieoniert, sogar mit VSNET Together
 
Zurück