ReSharper 4.5 gone gold

April 8, 2009 at 10:21 PMAndre Loker

JetBrains has released version 4.5 of their multi purpose productivity plugin for Visual Studio, ReSharper. This updates contains some pretty cool features. For example, solution wide analysis now checks for members that can be made internal. Also, JetBrains promises to have improved performance and memory use. All in all certainly an update that is worth installing, especially because updating from licenses for version 4.0 and above is free. Maybe I’ll give a more in-depth review if I find the time.

If you want to know more about ReSharper, check out my little overview page. There you’ll also find information on how to get an additional 60 days of free evaluation. Have fun!

Posted in: Tools

Tags:

MonoRail, AspView and ReSharper: skip ViewAtDesignTime

May 24, 2008 at 1:53 AMAndre Loker

AspView and Intellisense

AspView is a MonoRail viewengine which provides compile time checking of views and Intellisense support in Visual Studio. The latter is achieved by using the known ASP.NET WebForms syntax to define views, see below for an example:

aspview_viewatdesigntime

It uses the @Page directive and sets the Inherits attribute to a base class called ViewAtDesignTime defined by AspView. This base class contains fake methods and properties that are similar to the ones that are available to the runtime view class - Caslte.MonoRail.Views.AspView.AspViewBase. The only purpose of the ViewAtDesignTimeClass is to make Visual Studio's Intellisense work. It does, as can be seen in the picture. Additionally the user can provide a custom pair of design time and runtime classes that derive from ViewAtDesignTime and AspViewBase.

However, there is a caveat. ViewAtDesignTime derives from System.Web.UI.Page. This is a requirement of Visual Studio to make Intellisense work. As a result Intellisense will show all members of Page, which is at least confusing. More likely, it's misleading as many of the Members won't be available in AspViewBase and will let compilation fail.

aspview_intellisense

In the example above Intellisense shows members like DataBind which will not be available during compilation.

ReSharper to the rescue: skip ViewAtDesignTime

However, as Ken Egozi pointed out on the Castle Developer mailing list, if you use ReSharper (and you should) you can skip the ViewAtDesignTime class altogether and just use the AspViewBase class (or a derived class) in the view. ReSharper will still provide Intellisense. The list of members is much more reliable as those members will definitively be available during compilation.

aspview_resharper

Advantages of using the AspViewBase based class instead of ViewAtDesignTime:

  • Get better Intellisense: Page members are ommitted
  • Less code: if you provide your own base classes for views because you want to provide some extra members to the view (a good example would be the code generated by CodeGenerator) you do not have to provide a design time counterpart as well.
  • More robust code: similarly, if you have to provide a runtime class and a design time class you have to ensure that both interfaces match exactly, otherwise the design support is misleading (this problem does actually happen). Without the design time view, only one interface has to be maintained.

Disadvantages:

  • No Intellisense on dev machines without ReSharper (which is a good excuse to ask your boss for a R# licence anyway)

Thanks to Ken Egozi for this neat hint.

Posted in: Castle | Tools

Tags: , , ,

Kleine Toolkunde (I)

February 11, 2008 at 11:58 PMAndre Loker

Es mag ja durchaus Entwickler geben, die mit Notepad und csc.exe ihre Erfüllung finden. Ich gehöre definitiv nicht dazu und bin bekennender IDE Liebhaber. Neben den Standard-Features die Visual Studio so bietet, gibt es da draußen noch eine ganze Reihe kostenloser und -pflichtiger Add-Ins, die dem Entwickler das Leben noch einfacher machen. Oder sagen wir: weniger schwer.

Hier also eine kleine Liste von must-have Add-Ins für Visual Studio:

  • Resharper – ohne geht nicht, sorry. Wenn man sich einmal in das Tool eingearbeitet hat, ist ein Arbeiten ohne diesen treuen Begleiter eine Qual. Viel sagen muss man zu diesem vielseitigen Tool wohl nicht.
  • VisualSVN – eine vernünftige Subversion-Einbindung. Anders als das relativ instabile AnkhSVN macht sich VisualSVN das Leben viel leichter und verrichtet seine Arbeitet sozusagen huckepack auf dem Rücken der bekannten SVN Shell-Extension TortoiseSVN. Das Add-In kostet rund 37€, ist aber jeden Cent wert, weil es eine sehr löbliche Eigenschaft hat: man merkt nicht, dass es da ist. Stattdessen macht es einfach das, was es soll, ohne den Nutzer zu stören. Empfehlenswert ist auch das Repository-Verwaltungstool VisualSVN Server, welches gratis (!) zu downloaden ist.
  • VersioningControlledBuild – Versionsnummern im Griff. Wenn man nicht gerade einen Buildserver verwendet, ist dieses Add-In sehr nützlich, da es bei jedem Buildvorgang die Versionsnummern der Assemblies erhöht. Deutliche Versionsnummern machen die Kommunikation bei der Fehlersuche erheblich einfacher!
  • GhostDoc – XML-Dokumentation von Geisterhand. Sein wir ehrlich - es ist schon manchmal lästig, Code zu kommentieren. GhostDoc nimmt dem Programmierer insofern schon ein großen Teil der Arbeit ab, indem es XML-Dokumentations-Gründgerüste erstellt und so gut wie möglich probiert auszufüllen. Dabei schaut GhostDoc nach dem Namen des entsprechenden Members und nach bekannten Mustern (z.B. Eventhandlern). Man sollte nur vor lauter Automatismus nicht vergessen, diejenigen Informationen nachzutragen, die eben nicht automatisch abgeleitet werden können…
  • TestDriven.NET - Unit Tests aus der IDE heraus starten. So wird man beim TDD nicht immer dadurch gestört, zwischen Testrunner GUI und IDE wechseln zu müssen. TestDriven.NET unterstützt unter anderem MbUnit, mein persönlicher Favorit unter den Unit Test Frameworks.
  • Web Deployment Project - ein Tool von Microsoft, um Webseiten (Web Sites) und Webanwendungen (Web Applications) vorzukompilieren und zu deployen. Unter anderem erlaubt das Add-In diverse Varianten, um mehrere (oder alle) Pages und Controls zu einer einzelnen Assembly zu kompilieren. Dabei können auch Control-Bibliotheken generiert werden, wodurch die enthaltenen User Controls in anderen Projekten wie Custom Controls verwendet werden können. Code re-use, ik hör dir trapsen!

Posted in: Tools

Tags: , , , , , , ,