Domanda

Sto lavorando a un progetto C ++ che non intendo sviluppare o distribuire utilizzando le librerie o gli strumenti .NET, il che significa che per me avrebbe senso crearlo utilizzando un'applicazione Visual Studio Win32 Console. Tuttavia, ho sentito che le capacità di debug quando si utilizza un'applicazione CLR in Visual Studio sono molto più potenti. Quindi ho alcune domande:

  1. È vero che avere un'app CLR rispetto a un'app Win32 aggiunge funzionalità al processo di sviluppo anche se non si utilizzano librerie .NET o altre risorse?

  2. In tal caso, sarei ancora in grado di sviluppare / compilare il progetto come progetto CLR per trarne vantaggio anche se svilupperei un progetto C ++ puro usando STL, ecc. senza trarre vantaggio da qualche funzionalità .NET? O un progetto del genere richiederebbe differenze fondamentali che renderebbero banale tornare indietro, il che significa che dovrei restare con un'app console Win32?

È stato utile?

Soluzione

Risposta alla fine, se non si intende mai utilizzare il CLR o alcun oggetto .Net nella propria applicazione, utilizzare semplicemente una normale libreria Win ++ C ++. Fare qualsiasi altra cosa ti causerà dolore lungo la strada.

Ora, per rispondere alla domanda originale sul debug, sì, il debug con CLR presenta alcuni vantaggi rispetto al debug di una normale app C ++. A partire da Visual Studio 2005, sia C # che VB.Net hanno iniziato a concentrarsi sul rendere la visualizzazione variabile nella finestra locals / auto / watch molto più preziosa. È stato fatto principalmente attraverso l'introduzione di attributi .Net come DebuggerDisplay, DebuggerTypeProxy e il framework del visualizzatore.

Se non usi alcun tipo .Net, non otterrai nessuno di questi vantaggi.

Il valutatore di espressioni C ++ non sfrutta nessuno di questi. Ha i suoi metodi per personalizzare la visualizzazione dei tipi. Ma non è così ricco di funzionalità (o potenzialmente pericoloso) come lo stile dell'attributo perché non consente l'esecuzione del codice nel processo di debug.

Questo non vuol dire che il debug del C ++ offra una scarsa esperienza. È semplicemente diverso e ci sono display migliori per molti tipi di container STL.

Anche il debug di un'app CLR presenta alcuni svantaggi. Ad esempio, il debug del codice ottimizzato è quasi impossibile a volte perché JITer nasconderà variabili locali, parametri e spesso "questo". Il debug di un'app C ++ costruita in modo simile può anche essere frustrante, ma puoi sempre prendere i registri e in modo insolito per vedere cosa sta succedendo. Fare lo stesso per un'app CLR è difficile nella migliore delle ipotesi.

Altri suggerimenti

Penso che la compilazione del codice C ++ nativo in CLR apra un'intera lattina di worm. A meno che non si disponga di ingenti investimenti sul codice C ++ esistente e della necessità di eseguire il codice con tipi gestiti, questo è qualcosa che si desidera evitare.

Ad esempio, C ++ / CLI è un modo per raggruppare il codice C ++ nativo direttamente in un assembly CLR, ma C ++ / CLI aggiunge una sintassi non standard al linguaggio C ++ e l'uso di tipi C ++ nativi mescolati con tipi gestiti sembra molto complicato questione a dir poco.

Quindi, in conclusione, lo terrei solo come app nativa. Se hai intenzione di portarlo su CLR e hai appena iniziato a lavorare su questo progetto, penserei seriamente di iniziare a scrivere in una lingua nativa di CLR come C #.

Questa risposta è stata copiata da qui - http://social.msdn.microsoft.com/Forums/vstudio/en-US/895ecb47-8b34-4a1a-a20b- fda1e5e576eb / cosa-la-differenza-tra-clr-console-application-e-Win32 console-application

Qual è la differenza tra l'applicazione console CLR e l'applicazione console win32? - Il primo utilizza Common Language Runtime (in altre parole, .NET framework); quest'ultimo no.

e non riesco a utilizzare il sistema dello spazio dei nomi nel modello dell'applicazione console win32. - Lo spazio dei nomi di sistema fa parte di .NET framework.

Cosa devo fare quando voglio usare lo spazio dei nomi? - Dovresti scrivere un'applicazione .NET.

e Non ha suggerimenti di input come nel modello C #? - In effetti non esiste IntelliSense per C ++ / CLI nelle versioni esistenti di Visual Studio. Se vuoi un'applicazione .NET, C # potrebbe essere una scelta linguistica migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top