2009-03-12 6 views
0

Eine Web-Anwendung, die ich schreibe wirft dieses compiletime FehlerAsp.net Montagereferenzfehler

Fehler 1 Der Typ oder Namespace-Name ‚Web‘ existiert nicht im Namensraum ‚ATS.System‘ (sind Sie fehlt eine Montage Referenz?)

für jede Code-Datei in der Assembly der Namespace in jeder Datei (beide System und System.Web)

ich habe auch Referenzen hinzugefügt (sowohl) in den Referenzen importiert wird Dir in VS

ich don weiß nicht, was ich falsch mache

Antwort

1

Ich vermute, das Problem ist, dass Sie einen Namespace namens ATS.System haben - das wird die Dinge in einigen Fällen zu verwechseln. Wenn Sie möglicherweise können, benennen Sie den Namespace in etwas anderes um.

Hier einige Beispiel das gleiche Problem zeigt:

// Foo.cs 
namespace ATS.System 
{ 
    class Foo {} 
} 

// Bar.cs 
namespace ATS 
{ 
    using System.Collections.Generic; 

    class Bar {} 
} 

Wenn Sie die using-Direktive aus dem Namensraum-Deklaration bewegen, dh die zweite Datei ändern:

// Bar.cs 
using System.Collections.Generic; 
namespace ATS 
{   
    class Bar {} 
} 

dann ist es in Ordnung - aber Ich frage mich, ob der automatisch generierte Code für ASP.NET die using-Direktiven stattdessen in die Namespace-Deklaration einfügt :(ATS.System loszuwerden wird es sicherlich erleichtern, vorwärts zu gehen.

+0

Ich weiß nicht warum, aber das System generiert einen Namespace: ATS.System.Masters für eine meiner Dateien. Ich habe das wieder auf ATS geändert und es hat hervorragend funktioniert. Vielen Dank. – matthewdunnam

+0

@kev danke. Das lehrt mich, warum ich wusste, dass ein Ordner namens "System" eine schlechte Idee war! – matthewdunnam

+0

@Matt - Wenn der Standard-Namespace des Projekts ATS lautet und Sie einen Ordnerpfad '/ System/Masters' im Stammverzeichnis des Projektordners haben, fügt VS beim Hinzufügen einer Quelldatei zu 'Masters' automatisch den Ordnerpfad hinzu der Standardnamespace: ATS.System.Masters. Nur ein Gedanke, warum – Kev

0

Sie haben einen Namensraum "ATS.System", der mit dem Namensraum "System" in Konflikt steht. Wenn der Compiler "System.Web" sieht, denkt er, dass "System" auf den Namespace "ATS.System" verweist.

Benennen Sie den Namensraum ATS.System um, falls möglich, oder verwenden Sie einen Aliasnamen dafür. Etwas wie:

using AtsSys = ATS.System; 

Oder:

Imports AtsSys = ATS.System 

Das würde natürlich bedeuten, dass Sie AtsSys. vor jedem Klassennamen setzen müßten, die Sie von diesem Namespace verwenden.