Will Microsoft continue supporting C++/CLI? - visual-studio-2010

I've found C++/CLI to be a very powerful language for wrapping C/C++ libraries with .NET.
I believe it's much better than using PInvoke for C for various reasons.
However, when I've upgraded my project to Visual Studio 2010, I've found that it has less support for C++/CLI.
Examples:
Targeting the 3.5 framework with the Visual C++ 2010 compiler is not supported. - Won't be fixed.
No coverage highlighting. - Should be fixed in next version.
No Intellisense - 501921, 459187, 455686. By Design!
Useless CA1811 warning. - Won't be fixed.
Uselss CA1806 warning. - Postponed.
Microsoft claims:
I want to make it clear that while we
can't address this issue, we reduced
support for C++/CLI only due to time
and resource constraints. This is NOT
an indication that we are distancing
ourselves from the technology.
But, C++/CLI never had really good support, and if the current version of VS has less support, what does the future holds?

I doubt anybody has a truly definitive answer, even (for example) Herb Sutter, who works as an architecture on Visual Studio. The problem is simple: Microsoft's direction is determined (largely) by market pressures and customers. If a lot of people complain long and loudly about the problems, Microsoft will probably see fixing them as important -- and see C++/CLI as more important in general. If few people complain, chances are pretty good that they'll assume few people are using C++/CLI, and it'll remain marginalized.
To an extent, I think it's a self-fulfilling prophecy: they never really supported it quite well enough to make it a viable alternative, so it's never gotten a lot of use. That, quickly results in vicious circle of fewer users leading to less development leading to still fewer users...

Related

How do i implement intellisense for my language in visual studio?

I mention that i am designing a language. The plan was always to not implement it but to design it but i am considering implementing it if i think i could do it in a reasonable amount of time.
How would i have my language use intellisense in visual studios? BooLangStudio has it http://www.codinginstinct.com/2008/05/boo-in-visual-studio.html, http://www.codeplex.com/BooLangStudio
It all depends on how much time you want to spend on it. I have about 2,000 hours of work in my Visual Studio IntelliSense projects resulting in exactly one mostly-complete language service. That said, it's not your "average" IntelliSense extension to Visual Studio - see the feature set for more info.
Here are some good resources to look at. I have a tendency to write with an assumption that users are already familiar with both the Visual Studio Extensibility basics and parsing with ANTLR. If you aren't, you should probably start at www.antlr.org and with my "ANTLR port" of one of the simple Visual Studio language service tutorials.
Here are some posts showing how serious I am about the subject. :D
How does code completion work?
Smart code-completion original and revisited. Clearly I take the latter more seriously than other people (voted down and voted to close?!), but I believe doing so just gives my users a better product. :)
High-speed incremental lexing for syntax highlighting original (under IScanner-friendly lexers), cleaned up (significantly - vastly preferable to the original), and made yet again 6x faster in 1/4 the memory.
Little things like sane commenting/uncommenting and brace matching do make a difference. On a side note, once you use one that's well-behaved, the others (including the ones for some Microsoft languages in Visual Studio) are rather annoying.
If you can, read all the IntelliSense-related posts on my blog.
Smart indent is a PITA (I mean really smart, e.g. the C# language service in VS2008). I have a love/hate relationship with it. I'm annoyed now because writing this bullet made me think about it. Argh. My insight here makes me a bit forgiving of them breaking it for VS2010 Beta 1, but it doesn't keep me from missing its awesomeness.
PS: I can now build a syntax highlighter for a new language commenting/uncommenting in 1 day. In the same day I'm ofter able to get the type & member bars in as well.
This is a good place to look for Visual Studio Extensibility.
Also, here. But, the first link has a video specific to adding Intellisense to your language service.
As of 4-4-2017: This article seems to give all of the basics for creating a language extension, which includes highlighting words and providing intellisense (code completion).
https://code.visualstudio.com/docs/extensions/example-language-server

Is Visual Studio 2010 beta 1 usable?

I saw that Beta 1 of VS2010 was publicly availible.
My question to those of you who has tried it is: does it work good?
Will it cause my computer to blow up in tiny pieces? Will it crash randomly? Will it work with some minor glitches? Or is it just perfect from bottom up?
I'm only coding school- and hobby-stuff, so nothing that someones life depend upon, but i still want software that works. How close to a final product is it? Is it worth trying?
It's a bit slow, and there's no offline MSDN, but it's worth trying IMO. Having said that it's slow, I still use it on my NC10 netbook, so it's clearly not that bad :)
I've got it side-by-side VS2008, and that hasn't caused any problems.
I've seen a couple of glitches (once the keyboard handling went completely wonky) but it's certainly usable. The main question is what you want to get out of trying it - in my case I absolutely need to code against C# 4 to explore the new features. I do most of that from the command line in fact, where the speed of VS obviously isn't an issue, but it's nice to see the VS-specific features as well (like the debug threading views for Parallel Extensions).
It seems more or less usable on the .NET side. The C++ side is a bit more sketchy. On one hand, they've added support for some very nice new C++0x features, on the other, they've broken some absolute fundamentals.
Your plain old main function won't compile in 32-bit with unicode enabled. (Workarounds: Either compile as 64-bit, disable unicode, or rename the function to wmain).
This seems to me to be a strong hint that the C++ side of things is nowhere near release-worthy. I'd probably wait for beta2 before doing any serious work with that.
I would say it is great, but the performance hurts a bit.
Here is an idea for you: Install it into a VirtualPC. Then you can play and not care what it does. You don't like it, delete the VPC image and keep on trucking. That is how I play with Microsoft betas now. I never install them on any real machine - too risky.
Usable: Yes.
Recommended: Not if you'r a touchpad-addict or dislike crashing apps.
I've been trying it for 2 weeks now coding small C#-projects and these are my impressions
Reasons to use 2010:
Looks good
Multi monitor support
I can see myself using the code templating but right now i couldnt find any really useful stuff except for reducing the fontsize of comments.
Zoom in the editor
Select a variable and then press shift+up/down to go to next usage of this variable
Ctrl+, brings up instant search of classes and functions in the entire project. (i've become really addicted to this)
Floating watches for single objects
Reasons to not use 2010:
TOUCHPAD SCROLL DOESN'T WORK IN THE EDITOR!!! (this is reason enough to not upgrade if you are using it on a laptop)
I've had some random app-crashes in the middle of just writing code, once or twice per day maybe.
UI sometimes freezes randomly for about 30seconds and then returns to normal.
It started to use 100% CPU power from one of my cores once when it was minimized in basic editing-mode and i was doing other stuff in other programs, i only noticed it because the fan started to go wild.
Otherwhise it's pretty similar to 2008. I haven't noticed any difference in speed like other people say.
You need to ask yourself: what is the advantage for you in using VS2010 over VS2008? I would suggest that there is no advantage if all you are doing is "school- and hobby-stuff".
I'm still using VS2008 for business related stuff (and, indeed, VC6 for some stuff). I prefer to wait until all the early adopters have tested it (and Microsoft has released at least one service pack after the real product release) before I do their testing for them.
It seems to co-exist with other versions of VS without causing any problems.
Regarding the slowness - it seems to be the UI that is slow, rather than building. Once it's going it doesn't seem much slower on my fast quadcore. I've yet to try it on my laptop.
It's usable enough, the small glitches that I've encounter weren't that bad. However, certain VS extensions(like XNA) don't work in VS2010 at the moment.
It's fun to toy with. Not usable for me, cause re#er does not support it yet (had to install TestDriven .NET which works through keyboard shortcuts only to run my tests).
Gave me an insight how addicted I am. :/
Btw, on Win7, without virtual pc it seemed even faster than vs2008 for me.
VS2010 doesn't yet support mobile device projects, which might or might not matter to you.
VC++ wise - VS2010 has a built-in 64-bit compiler, VS2008 does not.
You can supposedly add 64-bit support to VS2008, but it takes some effort.
I've been using VS 2010 beta (with .NET 4.0 beta) on Windows 7 RC. I've been trying to rewrite parts of a large-scale business application in it to see what can be done with it.
The UI freezes frequently. I'm talking 1-10 minutes between freezes. The UI does not come back, so I'm forced to kill devenv.exe every time it happens. Microsoft probably puts my error reports in their spam folder by now.
For me, VS 2010 beta 1 classifies as unusable. However, it's fast, the new IDE functions are very handy, and it's pretty. I keep coming back to it despite my resolutions to wait for a stable build.

DevExpress Refactor Pro vs JetBrains ReSharper

In my department, we are currently using ReSharper 4.0 and deciding whether to upgrade to 4.5 upon its release next week. I personally am a huge fan of ReSharper however a number of my colleagues have pointed out that they have been using a plug in from DevExpress called Refactor Pro that performs similar functionality.
http://www.devexpress.com/Refactor
http://www.jetbrains.com/resharper/beta.html
Has anyone previously compared these tools and hold any strong views on which tool would give us the greatest increase in productivity and why?
In my department, we also use ReSharper. Today, I installed 4.5, but had already used 3.something, 4.0 and 4.1 before. It really offers many great refactoring and code-writing supporting functions, renaming methods and functions, reordering parameters...
What I really like is that according to your corporate code style, you can configure ReSharper to give you hints on style violations in different severity levels (and quickly apply according changes, like MS StyleCop, but much easier to configure and more subtle).
My absolute favorite feature is Class-Searching by entering only the CamelCases, i.e. you type TSHWLOV and ReSharper will know that you mean the class from some referenced library named 'TerrificSearchHelperWithLotsOfVoodoo'.
Last year I have tried the DevExPress CodeRush/RefactorThis-Alternative, after I was quite impressed by the things that Oliver Sturm did with it on BASTA Spring 08.
The interface catchier and more impressive than Resharper, there are huge arrows flipping around your IDE and things like that, though the core functionality is rather similar.
I had the feeling that CodeRush is more focussed on code creation than on refactoring, i.e. more shortcuts for tasks like creating variables etc.
My favorite feature there was a sidebar, which always shows you all keyboard-shortcuts available in your current context. This makes you learn those commands quickly, where in ReSharper you have to look up most of them in nested submenus.
Both suites are really powerful and it after months of using them you will probably still discover new functions, which you have always needed without knowing it.
However, I decided in favor of ReSharper mostly because of I was more familiar with it and DevExpress was using much resources on my notebook and occasionally even slowed it down. By now, I use a much more powerful machine again, maybe I will give it another try soon.
I personally prefer CodeRush.
I find R#'s interface drives my (admittedly minor) OCD tendencies crazy. The little lightbulb insists on appearing on the far left of the screen, even if it's advice pertains to something in the middle or on the right. I find it garish and distracting.
By contrast, CodeRush's equivalent smart tag is lower contrast and smaller. It is therefore capable of locating itself within the code without distracting from said code. I find I can ignore this SmartTag when I need to, and it is always right in front of me when I decided I need it.
It is mainly this, that has prevented me from wanting to explore R# any further.
As far as CodeRush's feature set: Code Analysis, Refactorings, CodeProviders, Templates, TabToNextReference, QuickNavigation and many more.
I especially like CodeRush's extensibility which has allowed myself and several others to create many plugins for use within it. (http://code.google.com/p/dxcorecommunityplugins/)
CodeRush also has some top quality support and a very active community of users.
Certainly neither R# or CodeRush will suit all users. Every one has their own preferences. However, if you've not tried both, you should certainly do so.
If you come from the R# side of the equation and are looking to test out CodeRush, then you may find the compatibility plugin useful (http://code.google.com/p/dxcorecommunityplugins/wiki/CR_ReSharperCompatibility)
In addition CodeRush has a Free edition 'CodeRush Xpress' which Microsoft commissioned DevExpress to create, and which they have licensed on behalf of every user of Visual Studio 2008. This partnership will continue into VS2010 upon it's release.
If you have any questions regarding CodeRush you can find details for contacting me at the bottom of my community wiki page.
I should say that I do not work for DevExpress. I am what you might call a DevExpress MVP. To maintain this position, I answer questions in the DevExpress forums (and nothing else).
Everything I say is my own honest opinion.
If you have any questions, feel free to contact me :)
I'm using DevExpress which has a lot of "hidden" functionality, so you need to read the manuals to know how to activate some of the functionality. I find it very passive and subtle.
I used ReSharper and found it buggy and very invasive in my coding style. Bracket-closing drove me nuts, it ignored my preferences and couldn't cope with how I write my lines of code - which may not be most efficient but it's one of those things that ain't gonna change!
I've tried both, and really didn't get along with ReSharper. I found it to be just too intrusive for my coding style. When I switched to CodeRush / Refactor! it was like I'd found the perfect aid to my productivity. The refactorings are, for the most part, exactly what I wanted to see from this kind of product.
It is, however, horses for courses and you may well find that you prefer ReSharper. The best advice I can give is to try the other products and see which you prefer.
The only correct answer is to use both, of course! I do. You need a beefy laptop though. If I had to choose only one, I'd choose ReSharper... I think the static code analysis is a lot better.
ReSharper has a lot of great features, and DevExpress has a lot of great features.
When you put the two together, you end up w/ whole lot of AWESOME.
You need to jump through a few hoops to make them play nicely together: http://frazzleddad.blogspot.com/2010/01/making-devexpress-resharper-play-nicely.html
R# 4.5 is a free upgrade if you have a 4.0 license. So I'd suggest to get and use it - changing the "productivity tool" is always a pain because you'll have to get used to different ways, keyboard shortcuts etc. of doing things - no matter how good the tool actually is.
I have a personal copy of Refactor Pro but I use R# 4.1 at work with the StyleCop add-in as that is the team standard tool. I like RfP's arrows and code positioning stuff which is better than R#. Otherwise the tools are very similar.
However, at this time, its the StyeCop add-in that swings it in favor of R# for me.
Cheers
Benjy

Will the deprecated /clr:oldSyntax supported in VS2005 and VS2008 still work with VS2010?

Does anyone know (with confidence either way) if Microsoft plans on continued support (as in compiling) the legacy (2003) deprecated (vs2005/vs2008) Managed C++ (MC++) Syntax to target the .NET CLR in C++ code?
Microsoft officially deprecated the /clr:oldSyntax with the VS2005 C++ Compiler (Orcas); and thankfully the VS2008 C++ compiler still supported the /clr:oldSyntax switch.
But will the C++ Compiler with VS2010 still support it? Or will the release of VS2010 finally break the backward compatibility with the /clr:oldSyntax?
I need to know before VS2010 is released for project planning scheduling and can't find the official word on the MSDN site or MVP sites?
If you can't find the information on MSDN or MVP, then it's probably a good idea to ask Microsoft directly here (the C++ ones, I'd guess). I don't work for Microsoft but I do work for another (very) large organization and we developers monitor public fora very closely. I suspect there's quite a few MS developers who would be watching that site.
However, if you're doing project planning without risk management and contingencies, you're not doing it right.
You should allow for the possibility that it will not be supported and do one of two things.
have an item in your Gantt chart to allow for the re-engineering.
have a risk log that clearly states re-engineering may be necessary.
From my experience, the first is usually better since, if you find you don't have to do it and the schedule is slipping, you can just drop that item to catch up. Sometimes you can drop it anyway and deliver sooner, just to make yourself look better for your annual performance review :-)
But even if you don't allow for it and then find it's necessary, the risk morphs into an issue and you can go to higher management to explain why more time is needed. You're covered since it was made clear in the risk log - it then becomes their decision to allow you more time or keep using a back-level of MSVC.
Keep in mind that if you don't have to do it, you probably still should consider it (sans schedule slippage). Microsoft didn't deprecate them for a laugh, they're going to disappear at some point. Although YAGNI suggests you shouldn't worry about it unless it's imminent, it would be prudent to do some work on getting ready for it.
That will avoid the last-minute mad rush when Microsoft finally do remove the functionality.
It seems to be supported - see VS2010 beta 2 documentation for /clr.
Well, you can check out the CTP bits. That's not a guarantee of what will be final, but it's a good idea. Doubtful there will be any big compiler changes at this point.

Migrating from Stingray Objective Toolkit

We have a collection of commercial MFC/C++ applications which we sell using Stingray Objective Toolkit, we have source code license and have ported it in the past to Solaris/IRIX/HP-UX/AIX using Bristol Technologies WindU (Windows API on UNIX, including MFC).
Any long story short recently about 18 months ago we ported Stingray to Win64, but a long a tedious task, during this time I did some research on commercial and open source alternative MFC extension libraries things like Ultimate Toolbox and Prof-UIS.
Has anyone else used Stingray and moved to an alternative?
If so which one would you suggest?
What were the main perils of the move?
Yes, we haved moved away from Stingray. It depends on what Stingray components you are using. For the grid control, you can use the free MFC gridcontrol from www.codeproject.com or the commercial one from http://www.bcgsoft.com/. The free one is OK but development has stalled, so no modern UI rendering etc.
The 'layout editor' Stingray component can be replaced by the one from bcgsoft.com, but I don't have experience with that - we rewrote the functionality we needed from that on our own (it was only a subset of what Stingray provided).
As for alternative MFC toolboxes, I suggest bcgsoft because part of their toolbox is in the Visual Studio Feature Pack so it's free and fits very well with VS. I have looked at Ultimate Toolbox (stay away from it, stale code that isn't updated anymore) and Prof-UIs (OK but I found it not so easy to integrate).
Now that BCG is part of the 'official' MFC I don't see a reason to choose something else than BCG (except for maybe the cost, if you need a free alternative you can look at codeproject).
I have limited experience with Stingray.
However, I want to suggest trying CodeJock's Xtreme Toolkit Pro (http://www.codejock.com). Its GUI is very good and its supported very well.
I have been using Stingray for last eight years or so, and have looked at moving off it a couple of times. So far, I've decided against, principally because I have ported a version to Windows CE & Mobile and don't see much else giving the same solution on this platform. While Stingray isn't perfect, they have now got a 64bit version, and it's a pretty stable product.
What I am doing, is replacing the very weak areas of Stingray, such as the XML support, with alternatives. In this case I went with Expat for performance reasons.
The perils of moving? You could go from something stable but old fashioned to pretty but flakey ;) In my case, I would also kill a fair number of my automated test scripts that work at GUI level.
Edit: Just to add a bit to the above, I moved from VS2003 to VS2008 this week and at the same time Objective Studio 2006 v2 to Objective Studio 10.1. The transition was pretty seamless, with one minor glitch that was promptly handled by RogueWave tech support. Even this would have gone unnoticed if we didn't have a very extensive GUI regression test suite. IMO, Stingray is a very mature, well supported, feature rich and most importantly stable product. I for won't be moving of it any time soon without very good reason.

Resources