Question

the core part of the bachelor thesis which I am writing right now is a plugin for a C# IDE that offers a few refactorings (it comes to more than simple refactorings but I want to keep it simple for the moment).

I've always been working with Visual Studio so far. However, I've heard that their AST access is rather uncomfortable. Alternatives are MonoDevelop and SharpDevelop. Another way to work with Visual Studios AST would be to access it via a custom ReSharper Plugin.

Does anyone of you have experience in writing Plugins for any of those target applications? What do you think? I appreciate every advice and disadvice.

Thanks, TH

Was it helpful?

Solution

An advantage of using MonoDevelop or SharpDevelop is that they're open-source, so you can be sure to have full access to the AST - you can go into the core and modify things, if necessary. Another advantage is that they're 100% managed code, so much easier to develop and debug. Plus, you're more likely to be able to get hold of core developers and ask them detailed questions.

If you're interested if working with MonoDevelop, I'd recommend you implement your refactoring directly in the existing Refactoring addin. We'd love to have more refactoring features :)

The codebase has been undergoing a bit of churn in master because we switched to a new AST and a parser based on the Mono C# parser, and the refactorings have not yet been ported over. I'd recommend you head over to our mailing list or IRC and ask some more specific questions there, so we can give you some more specific pointers.

OTHER TIPS

I believe VS 2010 has very good native support for plugins using MEF. Here's a guide: http://msdn.microsoft.com/en-us/library/dd885242.aspx

You can also use Devexpress DXCore, it's free with CodeRush Express.

The best AST access for refactorings is offered by NRefactory 5, a complete rewrite of the previous NRefactory version (which is used in both SharpDevelop and MonoDevelop). For SharpDevelop we plan to use the new NRefactory in SharpDevelop 5.0; and MonoDevelop will also migrate to it eventually (MonoDevelop is already using the new AST, but not yet the new type system/semantic analysis).

The main goal for this rewrite was to:

  • Provide a rich AST with position information for every token, making refactorings easier to write
  • Improve the semantic analysis performance
  • Eliminate some bad design decisions from the previous version (IExpressionFinder, and how referenced assemblies are handled)

In the future, you might also want to look at Microsoft's Compiler-As-A-Service.

Also be sure to checkout ReSharper from http://www.jetbrains.com/resharper which is a plug-in for VS that adds many refactorings

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top