New version of Spell Checker plugin for CodeRush(DXCore)

I just released a beta of new Spell Checker plugin version (a plugin for DXCore/CodeRush for Visual Studio.Net). The main new feature is that it does spell checking of XmlComments and Comments, too. Furthermore, different settings and dictionaries can be used for different categories.

So, if you are interested in a free spellchecker for your Visual Studio.NET code, go for it. Feedback is appreciated.

You'll find it here.

Working with Visual Studio.NET 2005 beta 2

I've been working for real with Visual Studio.NET 2005 beta 2 now for some time. It crashes here and there but overall it is a good experience from the stability point of view (I won't even start menitoning all the benefits - it would be a loooong post). So, if I had to chose doing a project with 2003 or 2005 I wouldn't hesitate to start it with 2005 and wait for RTM for releasing the product.

Creating DevExpress' XtraForm derived form as partial class

Developer Express offers an XtraForm (a windows form derived from Form class) with Look & Feel default set so you don't have to use LookAndFeel objects to centralize its appearance. One annoying feature is that when you create an XtraForm derived class using Add/New Item... in VS.NET 2005 beta 2 it will create traditional Form class structure: one file and no partial classes as Form does.

If you want partial class (possible only in Visual Studio.NET 2005) and XtraForm the solution is rather simple: Create a standard windows Form instead, go to its code and change the base class to XtraForm. Voila. The same is true for XtraUserControl.

DirectX wishes for VS.NET 2005

Do you have wishes for managed DirectX for Visual Studio.NET 2005? You are in luck. Tom Miller's put out a post inviting community to express their wishes for it. And there is no better person than Tom to speak to on managed DirectX topic.

Is SecureString usable

if you want to keep a secret text in a System.String you'll have security vulnerabilities. Since it stores the plain text in memory (and you have no control when it will be destroyed as this is controlled by garbage collector) a skillful user could read computer memory somehow and extract the password out of it. So, here steps in (new in 2.0) SecureString class that encrypts the text and stores it encrypted. The downside is that you can't transform it to managed string since it wouldn't make sense, as you'll be back to security vulnerability. That makes, it is useful only for communicating with unmanaged code. What is missing?
For example, it would be useful to have an overloaded constructor for SqlConnection that takes SecureString as an argument (connection string):

public SqlConnection(SecureString connectionString)

However, there is no such constructor. The question is why SecureString isn't used for stuff like this?

Find more about SecureString in this article.

Visual Studio.NET 2005 sugars

Did you ever find yourself wondering which namespace a class belongs to? One would open the help and use index functionality to find it. Now the process is a lot easier. Just type the class name into the code and, if class is referenced and its namespace isn't reachable, a little red box will appear at the bottom right side of the class name. This red tiny box is a huge benefit. Hover over it and it will give you two options: either include a proper using statement or prefix the class name with its namespace.

Once you try it you'll love it.

CodeSmith and Visual Studio.Net 2005 beta 2 story

I already blogged about CodeSmith being a wonderful tool so I won't repeat my ode again. While CodeSmith is a great tool it doesn't yet support integration into Visual Studio.Net 2005 beta 2. By integration I mean CodeSmith AddIn window and CodeSmithGenerator. I never find the former particulary useful thus I won't bother with it. The later it is another story.

Generators are those tools that transform a data file into a source file whenever data file changes or on demand. A typical generator is DataSetGenererator that ships with Visual Studio.Net itself and takes care of transforming dataset schema into strong typed dataset source file. To find which generator is used for transformation you might take a look at data file properties, field Custom Tool. That was a brief description of generators. If you are wondering what does CodeSmithGenerator do it is pretty simple. It takes a properly defined xml file that defines which template to use with which property sets and accordingly produces a source file - basically what CodeSmith does, but this time right within Visual Studio IDE. I won't elaborate here as it is not in the scope of this post.

So, what's the problem. As mentioned CodeSmith doesn't support Visual Studio.Net 2005 and doesn't install its CodeSmithGenerator to work with it. Fear not, there is a simple solution. Let's say you are installing CodeSmith on a computer with only Visual Studio.Net 2005 installed.

1. Install .net framework 1.1 which is required by CodeSmith (I am not sure if this step if required).
2. Install CodeSmith 3.0.
3. Add the following data into registry (paste it to a file named something.reg and double click on it).

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\CodeSmithGenerator]
@="CodeSmith C# Code Generator"
"CLSID"="{7F0B8122-49AC-4939-AB97-BBAD7B442D55}"
"GeneratesDesignTimeSource"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Generators is path to Visual Studio generators registry entries and {FAE04EC1-301F-11D3-BF4B-00C04F79EFBC} stands for C# generators (that work in C# projects). If you want to register generator for VB you should use this guid: instead (you can safely enter both versions) {164B10B9-B200-11D0-8C61-00A0C91E29D5}.

4. You'll need a CodeSmith installed on a computer with Visual Studio.Net 2003 (if it doesn't find Visual Studio.Net 2003 it won't install necessary files). Copy files from C:\Program Files\CodeSmith\v3.0\bin (assuming CodeSmith is installed in C:\Program Files\CodeSmith\v3.0 folder) into target computer.
5. Run Visual Studio .NET 2003 Command Prompt and change directory to C:\Program Files\CodeSmith\v3.0\bin. Run installutil CodeSmith.VisualStudio.CodeGenerators.dll to register the dll as an ActiveX class (that CLSID entry from registry entry in step 3).

That's it. You are free to run the CodeSmithGenerator now. Ah, yes, there is a minor issue. For some reason you won't be able to register the CodeSmithGenerator - it will always run in trial mode. That said, I hope Eric will add support for Visual Studio.Net 2005 to avoid these problems in future.