2010-02-26 11 views
23

La domanda è piuttosto vecchia e spesso è stata fatta in giro, ho domande simili qui ma la mia domanda è un po 'più specifica.Miscelazione di codice VB.Net e C# in un progetto di sito Web ASP.Net?

Q1. È legale mescolare il codice C# e VB.Net nel sito Web ASP.Net? Funzionerà o no? Se funziona come si può fare? Ogni campione andrà bene.

Q2. Se ci sono ripercussioni sulla combinazione di codice C# e VB.Net, si prega di condividere anche quelli.

Ho un progetto web che è codificato in VB.Net. Sto lavorando su un modulo del progetto. e voglio scrivere in C#. Non posso convertire l'intero progetto in C# perché non sono l'unico che lavora al progetto. Comunque, il modulo che intendo costruire, voglio avere quello costruito in C#.

Ho sentito dire che in caso di progetti web, se codifichiamo parte in C# e parte in VB.net, ci sono problemi nella compilazione del progetto in una DLL. È vero? se sì, qual è la soluzione.

Inoltre, se sto costruendo una libreria di collegamento dinamico in .Net, allora posso mescolare il codice C# e Vb.Net?

risposta

49

Da http://msdn.microsoft.com/en-us/library/t990ks23.aspx:

più linguaggi di programmazione nella App_Code Folder

Poiché il codice sorgente nella cartella App_Code viene compilato in un unico gruppo, tutti i file nella cartella App_Code devono trovarsi nella stesso linguaggio di programmazione. Ad esempio, la cartella App_Code non può includere il codice sorgente in Visual Basic e C#.

Tuttavia, è possibile configurare l'applicazione Web per trattare le sottocartelle della cartella App_Code come unità compilabili separate. Ogni cartella può quindi contenere il codice sorgente in un linguaggio di programmazione diverso. La configurazione viene specificata creando un elemento codeSubDirectories nell'elemento di compilazione del file Web.config e aggiungendo un riferimento alla sottocartella. Il seguente esempio illustra come si dovrebbe configurare sottocartelle chiamate il codice vB e CSCode per compilare in assemblee separate:

<compilation debug="false"> 
    <codeSubDirectories> 
     <add directoryName="VBCode" /> 
     <add directoryName="CSCode" /> 
    </codeSubDirectories> 
</compilation> 

I riferimenti alle sottocartelle il codice vB e CSCode non è necessario includere tutte le informazioni su ciò che il linguaggio di programmazione è contenuto nella sottocartella . Come con la cartella App_Code stessa, ASP.NET deduce il compilatore da utilizzare in base ai file nella sottocartella.

+3

+1. bella risposta... –

+7

La soluzione fornita funziona per un progetto SITO Web. Steve ha chiesto di un progetto di web application, tuttavia, che non usa le cartelle app_code. – Axeva

+0

WHAT A GENIUS .... +10000 –

0

Sembra che tu possa mescolarli all'interno dello stesso progetto mentre fai il pezzo di codice che ti serve come controllo. Quindi se il sito principale è in C# e si esegue la parte VB che si desidera come controllo ascx, è possibile eseguire il drap e rilasciarlo all'interno del sito.

Non mi rendevo conto che potevi farlo, ma un membro del team l'ha elaborato su un lavoro che stava facendo.

8

La risposta qui che ha il maggior numero di voti funziona solo per i progetti di sito web, non un progetto Web App. Penso che molti sviluppatori usano il termine "web application" ignorando genericamente il fatto che tecnicamente è una cosa diversa in .NET. Microsoft afferma: "Per impostazione predefinita, un'applicazione Web viene compilata in base alle impostazioni della lingua nel file di progetto e si possono fare eccezioni, ma è relativamente difficile." Quindi, presumo che l'unico modo per farlo sarebbe avere due progetti separati all'interno di un'unica soluzione. (Anche in questo caso, un progetto di sito Web non ha alcuna soluzione o file di progetto.) Non sono sicuro di tutti i dettagli.

+1

"(Anche in questo caso, un progetto di sito Web non ha alcuna soluzione o file di progetto.)" Può * avere * un file di soluzione, in realtà (VS potrebbe anche richiedere di salvarne uno), ma sì, non ha un progetto. –

+0

@ user692918: +1, correzione apportata al titolo e al contenuto. Ho avuto una soluzione con un progetto di sito web con diversi altri progetti. –

+0

La soluzione di cui sopra funziona per il progetto di applicazione Web? Ho una grande applicazione web con più progetti. Ho intenzione di aggiungere nuove modifiche su C# con lo stesso progetto web e altri progetti di librerie di classi. Funziona per me? –

Problemi correlati