Domanda

Ho un client che sta ancora usando Visual Studio 6 per creare sistemi di produzione. Scrivono sistemi multi-thread che usano STL e funzionano su macchine multiprocessore.

Occasionalmente quando cambiano le specifiche o aumentano il carico su una delle loro macchine server diventano "strani" difficili da riprodurre errori ...

So che ci sono diversi problemi con lo sviluppo di Visual Studio 6 e vorrei convincerli a passare a Visual Stuio 2005 o 2008 (hanno Visual Studio 2005 e lo usano per alcuni progetti).

Lo scopo di questa domanda è quello di mettere insieme un elenco di problemi noti o motivi per l'aggiornamento insieme a collegamenti a dove questi problemi sono discussi o segnalati. Sarebbe anche utile avere "storie dell'orrore" nella vita reale su come questi problemi ti abbiano morso.

È stato utile?

Soluzione

Non supportato su sistemi a 64 bit, problemi di compatibilità con Vista ed è stato rimosso dal supporto esteso di Microsoft l'8 aprile 2008

http://msdn.microsoft.com/en-us/vbrun /ms788708.aspx

Altri suggerimenti

VC6 STL senza patch non è thread-safe. Vedi qui http://www.amanjit-gill.de/articles/vc6_stl.html , le patch non sono incluse nei service pack e tu devi ottenerli direttamente da Dinkumware (da qui http://www.dinkumware.com/vc_fixes.html ) e quindi applicali a ogni installazione ...

Il problema più grande che abbiamo riscontrato sul mio posto di lavoro è l'incapacità di gestire anche classi o funzioni modellate marginalmente complesse. Questo fatto da solo ha costretto alcuni dei fan di VS6 più devoti dell'azienda ad aggiornare e iniziare a usare VS2005. Oltre al problema del modello, intellisense è molto meglio, il debug è più semplice e accurato e molte persone trovano l'IDE più facile da navigare. L'unico aspetto negativo che abbiamo visto finora è che le build impiegano un po 'più di tempo nel 2005 rispetto a 6 (ma questo è probabilmente un effetto collaterale del compilatore più robusto)

Puoi anche visitare questi siti per un campionamento di problemi noti in VS6:

Sono sicuro che potresti trovarne di più se frugassi un po 'in giro.

VS6 non compila il codice secondo l'attuale standard C / C ++. Ad esempio,

  • ha regole di scoping errate (obsolete) per i loop. Almeno un SDK MSFT è stato aggiornato ora con il codice che prevede la semantica corretta, quindi l'SDK non verrà più compilato con VS6.
  • Ha difficoltà a compilare tutti tranne i costrutti di template più banali.
  • Compilerà alcuni costrutti modello che sono stati dichiarati illegali negli ultimi aggiornamenti degli standard (perché i costrutti non fanno effettivamente ciò che si aspettano gli utenti normali).

l'operatore new non è conforme alle specifiche C ++ e non genera eccezioni in caso di errore di allocazione, la correzione non è banale.

vedi: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

Uno dei motivi principali per cui ho eseguito l'aggiornamento è stato il compilatore C ++ standard (anche se non ancora al 100%), quindi ho potuto sfruttare più funzionalità C ++ nei miei progetti e non preoccuparmi di strani hack e soluzioni alternative che possono portare a trova bug.

Non compatibile con Vista. Diamine, c'è un lungo elenco di problemi che VS 2005 ha con Vista.

Detto questo, la maggior parte dei miglioramenti in VS sembrano applicarsi a tutto tranne che al codice nativo C ++. Quello che vedo è una maggiore conformità agli standard, che è importante ma difficilmente drammatica.

Visual Studio 6 non è compatibile con gli ultimi SDK di Windows, quindi non può utilizzare (almeno facilmente) le ultime funzionalità del sistema operativo.

Anche se non ho più dettagli concreti, mi limiterò a lanciarlo quando ci siamo aggiornati al lavoro, il nuovo compilatore ha riscontrato alcuni errori che VC 6 ha lasciato passare tranquillamente. Miglioramento della robustezza del prodotto solo dall'aggiornamento.

Se usano l'STL, potrebbero essere interessati alla feature pack , che include un'implementazione di TR1 .

Ho aggiornato le mie cose ma è relativamente semplice. Un truffatore da aggiornare è VS 2005 DLL Hell

La versione VS 2008 dell'STL viene compilata con / clr , quindi se sono interessati a passare al mondo gestito, non devono perdere tutto il loro vecchio codice.

Per impostazione predefinita, le versioni più recenti hanno compilatore e librerie migliori. Ma non è sempre facile trasferire i progetti esistenti in uno studio più recente e puoi aggiornare manualmente sia il compilatore che le librerie.

Stavo usando VS 6.0 con il compilatore Intel solo un anno fa. Avevamo solo un sacco di vecchio codice allora, che stava minacciando iteratori come puntatori e viceversa, ed era tutto molto disordinato e spaventoso, quindi questo ci ha trattenuto da un aggiornamento.

Ma dopo tutto ho dovuto aggiornare, perché il framework che sto attualmente usando non funziona su VS 6.0. Pensa che questa sia la ragione ultima :-)

Anche le librerie di terze parti supportano solo un numero limitato di compilatori. Di conseguenza, il tuo client potrebbe non essere in grado di accettare correzioni di errori o aggiornamenti delle funzionalità.

Ad esempio, anche una libreria ampiamente utilizzata come Boost supporta solo VS 7.1 e versioni successive ( fonte )

E potresti avere alcuni problemi anche con DEP (Data Execution Prevention), perché VC6 viene fornito con una vecchia versione ATL. Come al solito, vedi Raymond Chen per i dettagli.

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