2009-10-06 20 views
16

ho un problema (ovviamente la questione :)Il nome del tipo {myUserControl} non esiste nel tipo {} myNamespace.myNamespace

Ho un MyProject project-- ... da qui il resto del progetto usa un default di qualsiasi classe come spazio dei nomi "MyProject" ... nessun problema.

Nel mio progetto, ho creato un controllo utente personalizzato che ha molti altri controlli su di esso (etichetta, caselle di testo, ecc.). Quindi, quella classe è ANCHE nello spazio dei nomi predefinito di "MyProject". Tutto compila senza problemi. Solo per confermare la visibilità dell'ambito, su questo controllo utente, mi sono assicurato che il codice DESIGNER e il Code-Behind (My code) fossero ENTRAMBI nello stesso spazio dei nomi "MyProject" (sono), e sono entrambi entrambi PUBLIC PARTIAL CLASS MyUserControl .

Ora il problema. Creo un modulo semplice (anche nello spazio dei nomi "MyProject" per impostazione predefinita). Dalla casella degli strumenti, esiste "MyUserControl", quindi lo trascino su MyNewForm. Drag/Drop va bene.

Salva tutto, compilare, non riescono ... Il progettista è l'aggiunta di un extra "MyProject" di riferimento così facendo sembrare che il controllo utente si trova effettivamente in MyProject.MyProject.MyUserControl .. invece di MyProject.MyUserControl.

Non appena rimuovo manualmente l'extra "MyProject.", Salva e compila, va tutto bene. Tuttavia, se rieseguo la modifica del modulo, cambi qualcosa, M $ lo riporta al riferimento "MyProject.MyUserControl" originale.

Detto questo, qui ci sono i frammenti del mio progetto ...

namespace MyProject 
{ 
    partial class MyNewForm 
    { 
     ... 
     private void InitializeComponent() 
     { 
     // THIS is the line that has the extra "MyProject." reference 
     // when I manually remove it, all works perfectly 
     this.MyUserControl1 = new MyProject.MyUserControl(); 
     } 
    } 


    private MyUserControl MyUserControl1; 

} 

Poi, nella definizione MyUserControl ho ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 
} 

e dalla MyUserControl tramite il Designer ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 

} 

Grazie per l'aiuto ...

risposta

11

Ciò che il progettista sta facendo è ok.

-> Avete in qualche luogo nel vostro progetto uno spazio dei nomi chiamato MyProject.MyProject.

(Provare a cercare in "Class View")

+2

CARICHI di ringraziamento. – Larry

+15

Succede anche, quando si ha classe in qualche spazio dei nomi con lo stesso nome del suo spazio dei nomi. – greenskin

0

Dal momento che questo è stato un risultato di ricerca in alto quando ho avuto questo errore, voglio solo inviare la mia causa e la soluzione.

  • Ho avuto due progetti all'interno di una soluzione, condividendo un file di classe "comune" che è stato aggiunto come collegamento.
  • Ho aggiunto un secondo file di classe "helper" come collegamento, utilizzato il suo codice nel primo e ottenuto l'errore.

Il problema era che non avevo aggiunto la seconda classe 'helper' come collegamento in entrambi i progetti.

Quindi l'altro progetto aveva una classe "comune" aggiornata, ma non conosceva la classe "helper" che ora utilizzava.

Nota all'auto: prestare maggiore attenzione alla colonna del progetto della lista degli errori :)

11

PS. a chiunque abbia lo stesso problema ma non abbia trovato alcuna soluzione ...

Supponendo di aver creato un nuovo WindowsFormApplication;

  1. Creare un nuovo progetto WindowsFormApplication con lo stesso nome del nome della soluzione.
  2. Il nome del modulo predefinito creato in precedenza viene chiamato "Form1". E cambia il suo nome come il nome del progetto.
  3. Aggiungere una nuova classe UserControl al progetto.
  4. Costruisci/Ricostruisci il progetto e verifica che l'usercontrol si trovi nella casella degli strumenti.
  5. Trascinare l'usercontrol nel modulo e avviare il debug.
  • Error: The type name 'userControlName' does not exist in the type 'projectName.FormName'

ho avuto la ricerca sulla rete per qualsiasi soluzione, ma non sono riuscito a venire con qualsiasi risposta ...

Ma se si cambia il nome del modulo qualsiasi altro diverso dal nome del progetto, è' Sarà risolto.

Se si insiste sul fatto che il nome del modulo e il nome del progetto devono essere uguali a seconda delle esigenze del progetto, è possibile creare una DLL personalizzata e utilizzare l'usercontrol in esso.

quindi di utilizzare come controllo, aggiungere il file DLL "cassetta degli attrezzi" con "Scegli elementi ..."

Infine si sta per essere pronto per l'uso.

PS2. lottando lo stesso problema per ore, questa è la soluzione che ho trovato.

+1

Ho riscontrato un problema simile. Per me, era una classe con lo stesso nome del namespace.Mi ha fatto impazzire ma grazie a questa risposta l'ho trovato. –

1

Nome del controllo utente e forma sono uguali. L'utilizzo di nomi diversi risolverà il problema.

2

Il nome del dominio e il nome della classe devono essere diversi. Il codice generato aggiungendo WCF fa automaticamente riferimento allo spazio dei nomi, ma se il nome della classe è uguale al nome del namespace, il codice generato esamina la classe e nulla verrà compilato.

0

Proprio incontrato questo dove ho avuto un MasterPage che ha avuto un esplicito

<%@ Import Namespace="MyNamespace" %> 

nel file .Master

0

Questo accade anche quando si utilizzano le pagine diverse, ma con lo stesso nome. Nel mio caso ho creato il set di dati "Grants.xsd" e la pagina "Grants.aspx". In qualche modo sono entrati in conflitto con questo errore.

È possibile risolvere facilmente questo problema passando con il mouse sulla parola chiave colpevole (nome classe) e in Visual Studio 2013, che ti dirà esattamente dove si trova il conflitto.

Problemi correlati