2009-11-26 13 views
5

Sto riscontrando un problema con spazi dei nomi e codice in conflitto che vengono generati automaticamente dal progettista di moduli in Visual Studio 2008. Ho cercato molti forum e documentazione diversa, ma non sono stato in grado di trovare qualsiasi soluzione a questo problema.Namespace, alias e Visual Studio Forms Designer

ho un'assemblea chiamata Foo.dll con il seguente spazio dei nomi/code:

namespace Foobar.System 
{ 
    public class MySystemClass() { } 
} 

Poi, ho un altro assembly che contiene som forme di uso comune:

namespace Foobar.MyCommonForms 
{ 
    public class MyForm : System.Windows.Forms.Form 
    { 
     public void SomeMethod() 
     { 
      var systemclass = new Foobar.System.MySystemClass(); 
     } 
    } 
} 

Qui, i compilatori visualizza il seguente errore: Tipo o spazio dei nomi 'Windows' non fa parte dello spazio dei nomi 'Foobar.System'. Ovviamente, il compilatore prova a cercare la classe System.Windows.Forms.Form nello spazio dei nomi Foobar.System.Windows.Forms!

Sono stato in grado di risolvere questo utilizzando l'alias 'x' invece di 'globale' quando si fa riferimento all'assembly Foo.dll e dichiarando 'extern alias x' nei miei file di codice, e metti 'x :: 'di fronte a ogni riferimento a tipi e classi nel namespace Foobar.System. Il codice viene compilato.

Ma sembra che il progettista di moduli non lo riconosca e mi dà un errore quando provo a visualizzare il modulo. Questo, ancora una volta, può essere risolto mettendo manualmente 'global ::' davanti a ogni riferimento alle classi in System.Windows.Forms (es. Global :: System.Windows.Forms.Button), ma ogni volta le possibilità vengono fatte al forma, il codice viene automaticamente rigenerato e la parte 'global ::' viene rimossa.

Quindi, la domanda è: c'è un modo per rendere il progettista di moduli consapevole dell'alias 'x' che viene utilizzato per fare riferimento al mio assembly Foo.dll, o c'è un'altra soluzione migliore per questo? Rinominare lo spazio dei nomi Foobar.System in qualcos'altro è troppo lavoro.

+0

Sto riscontrando questo problema anche in VS 2010 !! –

risposta

0

Non c'è modo di aggirare questo, da quello che posso dire.

I popolari strumenti di refactoring come Resharper o Refactor! entrambi includono la possibilità di rinominare globalmente uno spazio dei nomi. Prenderò seriamente in considerazione l'idea di usarli.

Problemi correlati