Fog Creek Software
Discussion Board




Welcome! and rules

Joel on Software

Visual Studio 6 v. VS .net for non-.net C++?

Howdy,

At work I've been using Visual Studio 6 since it came out, however long
that's been. I like VS 6, and I'm very comfortable with it.  At home I have Visual Studio 5.

I'm planning on a personal programming project that I will want to
distribute as a plain old MFC/win32 app.  Having written a little in VS 5
this week, I've decided I want to upgrade my IDE.

Just as an IDE, does VS .net have significant advantages over VS 6 for
standard C++ program development?

Jim

Jim Howard
Thursday, September 19, 2002

I do not thing the differences are overwhelmingly significant, but I do like the VS.NET IDE enough that I have just moved a couple of straight non .NET projects over.  Everything compiled and worked fine.  Changes to MFC are pretty minimal, as far as I can see.  Certain things (like changing project properties and similar) are moved around just enough to annoy me (also a long time VS6 user).

I would not buy it just for VC++, but if you have VS .NET, it is likely worth the install, and in any event, VS6 and .NET can coexist if you want to have both on the machine.

Douglas Reilly
Thursday, September 19, 2002

I haven't used C++.NET much in the past but I did use it to create a few simple COM objects.  I like the Attribute based approach for created COM objects.  It's much cleaner:

[
  coclass,
  threading("apartment"),
  vi_progid("atltest2.CDog"),
  progid("atltest2.CDog.1"),
  version(1.0),
  uuid("3631F764-F586-451F-B4BC-952363CA5E08"),
  helpstring("CDog Class")
]
class ATL_NO_VTABLE CCDog :
  public ICDog
{
public:
  CCDog() { }

  DECLARE_PROTECT_FINAL_CONSTRUCT()
  HRESULT FinalConstruct()
  {
    return S_OK;
  }
    
  void FinalRelease()
  {
  }

public:
  STDMETHOD(Bark)(void);
};

Richard Caetano
Thursday, September 19, 2002

I found the VS.NET IDE to be more integrated then previous versions. I like the new tabbed MDI windows, and intellisense seems to work a little better. The GUI is now shared between diffrent languages which makes things easier when you are switching back, and forth between C++, and C#. WinForms rock though, finally a decent RAD environment.
There are bad things as well. The IDE is bigger, and takes longer to load.  They moved stuff around, it took me 20 minutes to find out where to change the linker settings the first time...
I would recommend it, but it wont initially increase your productivity with MFC, and it might frustrate you with its small differences.

Nathan Downey
Thursday, September 19, 2002

The VS.net environment is pretty kick-ass for non-managed C++ too. Think about the convenience of Intellisense in VS6, and then double it.  The new environment is just super-helpful about filling in method names and parameter types. Very handy.  The integrated documentation extractor (turn leading comments into doc, just like JavaDoc) is very helpful. The doc shows up as tooltips while you are browsing a class. 

The fact that you can have both installed side by side is very very useful.  We did run into some problems moving our code over, mostly because we don't use MFC. We like german classlibraries and STL where I work, and the header files have changed enough between VS6 and VS.net to make the move non-trivial.

Christian Mogensen
Thursday, September 19, 2002

You may be interested in the fact that ClassWizard has been removed. The functionality is now made available via the Properties windows. This seemed very VB like and turned me off at first.

In practice however, I am not using VS.NET for Win32/MFC programming but rather C#/Windows.Forms. You may feel differently if your using VS.NET for MFC programming.

Tom
Thursday, September 19, 2002

We have a rather extensive application framework that is based on MFC 6.0.  It involves a number of Extension DLLs using dynamic linking with the MFC libraries.  We have experienced big problems with porting our application to MFC 7.  Not so much because of changes to MFC as because of errors in the compiler and/or linker.  It appears that Visual Studio.NET does not always correctly import template based classes (Q309801).  We also have problems with dynamically created classes that seem to disappear from the chain of RunTime classes.  The result is broken Serialization because the classes cannot be found.  The odd thing is, that this particular problem seems to go away in a Release build!

Jerry Goldin
Thursday, September 19, 2002

I've been working in unmanaged C++ (old projects at work) in VS.net for a few weeks now. 

I really didn't like it initially.  My favorite buttons and menu options were moved all around, and some (like View.ShowSymbolResults now ctrl-alt-f12) were tucked away so well I wouldn't have bothered looking if I didn't really want them.  The integration with VSS is still quirky, and will crash Studio sometimes.  Startup is slow.

Some of the messages at warning level 4 are much more useful, and there are more of them than in VC 6.  When walking thru code in debug, it does nice things like pop up a warning when you hit an uninitialized var.  The Help works a lot faster.  Project settings (makefile stuff) have a friendlier interface.  Intellisense hasn't just stopped working like it would sometimes in VC 6.

If you're willing to spend the time to get to know it, I'd recommend it.

K Owen
Thursday, September 19, 2002

I agree that I did NOT like VS.NET's IDE at first. My favorite keyboard shortcuts have been changed. Some of the menus are quirky. For example, the Project\Settings has been renamed View\Properties. However, the Properties menu item is not always visible in the View menu! You must first right-click on your project's name in the Solution Explorer (aka Workspace), and THEN the Properties menu item is magically added to the View\Properties menu.  :-(

Zwarm Monkey
Thursday, September 19, 2002

I forgot to add the F7 Build keyboard shortcut has been replaced with SHIFT+CTRL+B. Of course, that can be customized.

What cannot be customized is that F4 no longer works as the "jump to the file and line of the next build error or find-file result listed in the output window". You must use F8. The keyboard customize dialog always you to choose F4 instead, but it does work correctly and you must still rely on F8.

Why did they needless break a Good Thing that was working fine for years?  :-(

Zwarm Monkey
Thursday, September 19, 2002

Here's an interesting article by Nick Hodapp (Microsoft's Visual C++ .NET Product Manager).

He outlines some of the changes, and benefits.

www.codeproject.com/scrapbook/semicolon_0.asp

Padraic Walsh
Friday, September 20, 2002

If your prefer the Visual C++ 6 keyboard shortcuts, change the following setting:

- Go to Menu > Tools > Options > Environment > Keyboard.
- Set the Keyboard mapping scheme to 'Visual C++ 6'.

F4, F7 and many others will work as expected.

Bernard Vander Beken
Friday, September 20, 2002

We moved to using VS.net for our non-.net C++ several months ago, and I've found the new IDE a joy to use on the whole.  The removal of the class wizard for MFC applications was hugely annoying at first, but I'm now quite used to the 'Delphi-style' interface.

The one thing that I find really irrirating is the increased build time.  Our main development project at the moment consists of 24 'projects' in one 'solution'. VS.net seems to spent a significant amount of time stepping through projects that it does not need to build when a 'build solution' is invoked.

On the subject of VC6 shortcuts, when the VC6 keyboard mappings are chosen F4 moves to the next build error, and F8 moves to the next 'find in files' result.  If in doubt, try them both!

David Miller
Friday, September 20, 2002

The compiler itself has also been improved.  So even ignoring the IDE, you'll probably get better executable code out of the VC7 compiler....

Michael Kale
Friday, September 20, 2002

*  Recent Topics

*  Fog Creek Home