2012-10-14 3 views
16

Sono bloccato su un problema in VS 2010 C#. NET. Ho avuto un progetto su Windows XP che include moduli, classi e una manciata di componenti personalizzati. Questi componenti sono semplici estensioni di componenti MS incorporati (ad esempio, DataGridViewEx come estensione di DataGridView). Tutto ha funzionato bene in XP. Sto cercando di trasferire questo progetto su VS 2010 su Windows 7/x64. Ho la soluzione per compilare OK su Windows 7, tuttavia in modalità progettazione, quando apro un modulo che contiene uno dei controlli personalizzati, viene visualizzato l'errore 'Impossibile trovare il tipo XYZ.DataGridViewEx. Assicurati che l'assembly che contiene questo tipo sia referenziato. ' XYZ è lo spazio dei nomi che utilizzo per questi controlli ed è lo stesso spazio dei nomi dei moduli che utilizzano i controlli. Tutti fanno parte dello stesso progetto VS.Errore di progettazione VS 2010 'Impossibile trovare il tipo XYZ' in Windows7. Funziona bene in XP

Quando apro un modulo nello stesso progetto che non contiene uno di questi controlli personalizzati, tale modulo apre OK nella finestra di progettazione e vedo i controlli personalizzati sul lato sinistro nella casella degli strumenti. Tuttavia, se poi provo a trascinare uno di questi controlli in tale modulo, viene visualizzata una finestra di messaggio di errore "Impossibile caricare l'elemento della casella degli strumenti" DataGridViewEx ". Sarà rimosso dalla casella degli strumenti. ' E poi viene rimosso dalla casella degli strumenti.

Tutto funzionava sempre bene con la soluzione VS in XP. Questo problema si verifica solo nella soluzione VS in Windows 7/x64.

Non capisco perché si lamenta di non essere in grado di trovare il componente, poiché il componente fa parte dello stesso progetto. Questa è una cosa valida da fare, non è vero?

Ho cercato nel web/forum e trovato casi dell'errore "Impossibile trovare il tipo", ma sembrava essere causato da un altro problema e non ho ancora trovato un modo per sbarazzarsi del errore.

Qualsiasi aiuto/suggerimenti sono molto apprezzati!

+0

L'ho ottenuto lavorando creando una nuova libreria di classi all'interno della soluzione e spostando tutti i componenti dal progetto originale nella nuova libreria di classi e cambiando i riferimenti del designer in modo che puntino al nuovo spazio dei nomi delle librerie di classi. E 'stato un dolore, ma funziona. – jble

+0

ho trovato che la creazione di una nuova classe essenzialmente duplicato il problema nella classe di nuova denominazione ... – fa1c0n3r

+0

@jble si dovrebbe pubblicare la soluzione come risposta e segnare la risposta nel caso in cui altri inciampare su questo. – Sam

risposta

1

Prima di eseguire questa operazione, assicurarsi che nel file di codice Form.Designer.cs, ogni chiamata ai controlli personalizzati venga eseguita in modo assoluto. Per esempio:

Namespace.CustomControl control; 

Piuttosto che

CustomControl control; 
+0

Grazie - sì, ho controllato questo. Le chiamate vengono effettuate come chiamate assolute (pienamente qualificato con namespace). Il problema si verifica ancora in Windows 7. – jble

+0

Solo un controllo qui, hai modificato l'impostazione di architettura nelle impostazioni del progetto? Questo potrebbe avere qualcosa o nulla a che fare con il tuo attuale problema, ma dal momento che stai andando da x86 a x86_64 questa sarebbe una mossa saggia, a meno che tu non voglia retrocompatibile con x86. Onestamente non riesco a ricordare esattamente come l'ho risolto nei progetti precedenti. – Wanabrutbeer

+2

c'era qualche conclusione a questo problema? – fa1c0n3r

1

Guarda i tuoi riferimenti e trova quelli che hanno icone punto esclamativo. Rimuovi i riferimenti errati e aggiungili nuovamente al tuo progetto.

0

Hai ricostruito i componenti da zero?

I progetti sono inclusi?

Costruiscono tutti?

Stanno tutti costruendo sulla stessa piattaforma (x86 vs x64)?

0

Impostare il predefinito predefinito su x86 e che dovrebbe risolverlo.

0
  1. Pulire la soluzione
  2. Costruire il progetto che contiene il controllo
  3. Aggiungere il controllo alla casella degli strumenti/modulo

vedere se questo funziona.

20

Se il progetto è destinato a 64 bit, è necessario creare per 32 bit e scegliere la soluzione a 32 bit mentre si esegue la modifica della GUI. Questo perché Studio è a 32 bit, quindi non può caricare i controlli a 64 bit.

+5

Non riesco a credere che VS2010 non abbia nemmeno avvertito che questa è una possibile causa di problemi! Era esattamente il colpevole nel mio caso. Grazie! – Bart

+3

Dopo un lungo periodo di debug questo mi ha fatto impazzire. Il problema è ancora presente in VS2013. Probabilmente non sarà mai riparato. – Alex

+1

Sviluppo molto sciatto da parte di Microsoft. – xpda

0

Per chi ha problemi simili. Ho appena trovato questo in VS 2013 (lato VB) su un PC x86. Come accennato in precedenza, ho spostato da 'anyCPU' a 'x86' e la finestra di progettazione del modulo è stata aperta a destra. Semplice, ma probabilmente non l'avrei provato senza i post precedenti. Per quello che vale, ritornai a 'anyCPU', e ancora non ho avuto recidive ...

0

Ho affrontato lo stesso errore, non riesco a Costruire la mia applicazione.

Così cercato qui, dice di cambiare la piattaforma della soluzione X64 o X32. Ma nel mio caso la piattaforma della soluzione mostra solo l'opzione CPU e configurazione di configurazione solo

Ma ho semplicemente modificato la configurazione della soluzione.

Debug => Release

poi

uscita => Debug

Infine pulito e ricostruita la soluzione. Funziona per me !! :)