2012-08-09 9 views
19

Ho creato una classe che estende DbConnection in un nuovo progetto.VS2010 apre il mio file di classe (.cs) nella modalità designer

public class FakeDbConnection : DbConnection { ... } 

In Esplora soluzioni della classe assomiglia a questo: enter image description here

E quando si fa doppio clic su di esso vuole aprirlo in modalità di progettazione che non funziona. L'apertura del .csproj file rivela il problema

<ItemGroup> 
    <Compile Include="FakeADO\FakeDbConnection.cs"> 
    <SubType>Component</SubType> 
    </Compile> 
</ItemGroup> 

Anche se mi tolgo la SubType tag VS2010 immediatamente ri-aggiunge. Molto noioso.

Come posso impedire a VS2010 di aprire il mio file .cs in modalità designer e aprirlo come un normale file di codice?

+0

Rimuovere il file e aggiungerlo nuovamente e ricordare di cambiare il tipo questa volta – Ankit

+0

Provato e VS2010 aggiunge nuovamente il tipo non appena apro il progetto. – vidstige

risposta

39

Come descritto in una risposta ad this question si può fare questo:

[System.ComponentModel.DesignerCategory("Code")] 
class FakeDbConnection: DbConnection { ... } 

Importante: L'attributo deve essere fully qualified altrimenti VS2010 ignorerà questo.

Importante (grazie a jmbpiano): l'attributo si applica solo alla prima classe nel file.

+0

Interessante ... non funziona per me :-(Sto usando VS2010 e ho provato con una classe che eredita solo Component, e ho anche provato con una classe che eredita TabControl. ..senza tanta fortuna ... forse non funziona su Express Edition, anche se lo trovo altamente improbabile! – series0ne

+0

Hmm, strano. Hai rimosso manualmente il tag del tag nel file .csproj? – vidstige

+3

Trovato il problema, è necessario * pienamente * qualificare l'attributo, o non funzionerà. – vidstige

0

Questo perché DBConnection eredita "Component". Informazioni sulla disattivazione di VS per aggiungere "Sottotipo" nel file csproj - Non penso che sia possibile.

È ancora possibile Aceess il codice, facendo clic destro in designer -> show codice (credo "F7" è il tasto di scelta rapida per questo)

+0

Benvenuti in StackOverflow! Grazie per la risposta. Lo sapevo già, ma non l'ho messo nella domanda. Sembra un po '. Ma se è l'unico modo, credo che sia una sorta di soluzione. – vidstige

1

la gerarchia di ereditarietà indica che questa classe (DbConnection) eredita da System.ComponentModel.Component. Prova a fare clic con il tasto destro sul file e su Visualizza sorgente.

Come sempre è possibile controllare MSDN! Here è la documentazione per DbConnection.

+0

Grazie, lo sapevo già, ma è molto macchinoso. Aprire un file non dovrebbe essere così complicato. – vidstige

+1

@vidstige Non è esattamente complicato, non è così facile come un doppio clic. Dai un'occhiata alle impostazioni e alle opzioni di Visual Studio. Potresti essere in grado di trovare un'opzione come "Derivati ​​Open Component nella vista sorgente per impostazione predefinita". So cosa intendi però, è fastidioso che i componenti si aprano nel designer quando non tutti i componenti sono necessariamente disegnabili. – series0ne

+0

Chi cerca troverà - Vedi la mia risposta :) – vidstige

Problemi correlati