I have released the new versions of my BE related projects in CodePlex.
Neovolve.BlogEngine.Web 1.1
Neovolve.BlogEngine.Net.Web 1.1 contains a redirector module that translates Community Server url formats into BlogEngine.Net urls. This module will redirect Community Server pages, posts, month post lists, day post lists, tags, syndication and tagged syndication urls to the most appropriate location in BlogEngine.Net. BlogEngine.Net relies on its own friendly written urls when the urls are processed. This module cannot rewrite Community Server urls as BlogEngine.Net will not be able to understand what the requested resource is. The module must redirect requests to the equivalent BlogEngine.Net friendly url so that BlogEngine.Net url writing can occur such that resources are resolved correctly.
In Community Server, tags and categories are the same thing and it supports tag filtering by allowing multiple tags to be defined. BlogEngine.Net supports both tags and categories as separate entities and has a concept of a category hierarchy, but doesn't support tag filtering. When a Community Server url is encountered where multiple tags are defined, the first Community Server tag in the url that can be matched to either a BlogEngine.Net category or tag will be the resource used to response to the client request. Preference is given to categories over tags.
Neovolve.BlogEngine.Extensions 1.2
Contains updated CatTagLink, Snippets and SyntaxHighlighter extensions.
Tags: blogengine.net, BlogEngine.Net
a815db68-4833-468c-90ca-5c2726ee8dcc|0|.0
I have just released a new version of ReSharper Plugins. This version updates the identification and conversion of value types in cref xml documentation references and now supports ReSharper 4.5
Get the goods here.
Tags: ReSharper
a074a0ef-9bad-41fe-b794-de9a9cd4194f|0|.0
This release contains bug fixes and added features for CatTagLinker and Snippets BlogEngine.Net extensions. See Neovolve BlogEngine Extensions 1.1 Help for further information. The release can be downloaded from here.
Tags: BlogEngine.Net, blogengine.net
43e778e6-ef41-484c-ae7f-df90c7d5fb8a|0|.0
ReflectorLink 1.0.1 is a minor update to 1.0. It fixes the issue where ReflectorLink wasn't able to resolve the Reflector window in order to ask it to load specific assemblies as determined from the selected context in Visual Studio. The issue was that the title of the window was changed when the application was bought by Red Gate.
You can grab 1.0.1 from the CodePlex project release page here.
Tags: ReflectorLink
0d0f88d4-399f-4fe5-b8da-0484dc3de167|0|.0
One of the parts of my migration from Community Server to BlogEngine.Net was to continue support for Community Server url formats. Primarily, this is because I have lots of Google traffic and people who are subscribed to syndication feeds on those urls. Writing an http module was the easiest way to provide support for these existing urls.
I have released the first version of this module which is being used on this site currently. You can get the binaries and source from the CodePlex project here.
The following are the release notes which are also found in the comments in the code:
Neovolve.BlogEngine.Net.Web 1.0 contains a redirector module that translates Community Server url formats into BlogEngine.Net urls. This module will redirect Community Server pages, posts, month post lists, day post lists, tags, syndication and tagged syndication urls to the most appropriate location in BlogEngine.Net. BlogEngine.Net relies on its own friendly written urls when the urls are processed. This module cannot rewrite Community Server urls as BlogEngine.Net will not be able to understand what the requested resource is. The module must redirect requests to the equivalent BlogEngine.Net friendly url so that BlogEngine.Net url writing can occur such that resources are resolved correctly.
In Community Server, tags and categories are the same thing and it supports tag filtering by allowing multiple tags to be defined. BlogEngine.Net supports both tags and categories as separate entities and has a concept of a category hierarchy, but doesn't support tag filtering. When a Community Server url is encountered where multiple tags are defined, the first Community Server tag in the url that can be matched to either a BlogEngine.Net category or tag will be the resource used to response to the client request. Preference is given to categories over tags.
To use this module, put the release binary into your bin directory and add the following to the httpModules section in web.config.
<add name="CSUrlRewrite" type="Neovolve.BlogEngine.Web.CSUrlRedirector, Neovolve.BlogEngine.Web"/>
Download from here.
Tags: blogengine.net, BlogEngine.Net
97ba43b9-0a44-4115-8f58-08ff96edaf0b|1|5.0
Snippets 1.2 contains two bug fixes for BlogEngine.Net. The first bug was serious in that the extension was stripping contents that occur before the first html tag for snippets that don't require brackets. The second bug was minor in that the extension would not inject snippets which don't require brackets when the content doesn't contain any html tags.
Get the latest code from here.
Tags: BlogEngine.Net, Extensibility
db82a18b-4969-4fff-9961-09b8c5b8ab5f|0|.0
I have updated my Snippets BlogEngine.Net extension to have better handling of html tags. Fragments are now only injected into the contents of html tags rather than their definitions. The contents of anchor tags are skipped if the fragment itself contains an anchor tag.
You can grab the latest version from here.
Tags: BlogEngine.Net, Extensibility
9947d63b-00fb-4fc0-af76-8fdabcafbe2c|0|.0
I'm working on a new Visual Studio addin that launches a profiling application that in turn runs unit and load tests. I can't recall how I created the project, but it must not have been by using the addin wizard. When I debugged the addin in another instance of Visual Studio, I got an error indicating that the addin couldn't be loaded or threw an exception. The additional information it gave was "No such interface supported".
After pulling my hair out for quite a while, the answer was that the AssemblyInfo.Community Server contained the following:
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
Visual Studio is written mostly in the COM world, including the functionality that resolves and loads addins. This attribute hides the addin from Visual Studio. It therefore can't find the interface it is expecting when it attempts to load the addin from the configured type information. Removing this attribute from AssemblyInfo.Community Server (it is included by default) or setting its value to true will allow Visual Studio to correctly load the addin.
Tags: extensibility
2b6f83c5-14c9-45a9-9aa6-379904f9edb9|0|.0
I have just released the ReSharper Plugins 1.0 in my NeovolveX extensibility project on CodePlex. This plugin formats code as part of the ReSharper code format profiles.
The following is a copy of the Using ReSharper Plugins 1.0 documentation on the project site
Value Type Alias Formatter
The ReSharper Plugins project currently contains a single plugin that provides C# code formatting functionality. This formatting function allows for type declarations to be formatted between their alias type and their CLR type. For example, depending of the format settings defined in a code cleanup profile, bool can be converted to Boolean or Boolean converted to bool.
Configuration
The following displays the normal code format profile dialog.

When the plugin is installed, the code format profile dialog will include an additional format option called Type alias conversion.

The type conversion options are:
- Do not change - No change is made to the code
- Convert to alias type - References of CLR types are converted to their alias types (Boolean to bool for example)
- Convert from alias type - References of alias types are converted to their CLR types (bool to Boolean for example)
The Do not change setting is the default value.
Type mappings
The following are the type mappings that are supported for converting types between alias types and their CLR types.
| Alias type | CLR type |
| object |
Object |
| char |
Char |
| string |
String |
| bool |
Boolean |
| byte |
Byte |
| short |
Int16 |
| int |
Int32 |
| long |
Int64 |
| ushort |
UInt16 |
| uint |
UInt32 |
| ulong |
UInt64 |
| double |
Double |
| decimal |
Decimal |
| float |
Single |
| sbyte |
SByte |
Code examples
Code formatted to use alias types

Code formatted to use CLR types
Grab it from here.
Tags: Extensibility, ReSharper
cbd350e7-fffa-4b5f-8220-f9a849064cf6|0|.0
I have been working on a CodePlex project over the last month or so that contains a set of extensibility tools. I have just released ReflectorLink 1.0 which is a Visual Studio addin that launches Reflector.
The following is a copy of the Using ReflectorLink 1.0 documentation on the project site.
ReflectorLink is a Visual Studio addin that launches Reflector. Before launching Reflector, it checks to see whether Reflector is already running. If it does find Reflector already running, it will set it as the active application. If Reflector is not found, it will be started (assuming it can be found). After Reflector has been activated/started, additional commands may be sent to it to load assemblies.
ReflectorLink can be invoked from the Tools menu, Solution Explorer context menus or the code document context menu.
Tools menu
Click the Tools menu and select Reflector.

When launching Reflector from the Tools menu, Reflector will be launched with no further action if no solution is loaded. If there is a solution loaded, the binary references of each project will be loaded into Reflector.
Code document
Right-click on a code document and select Reflector.

When launching Reflector from the code document, ReflectorLink will determine if there is a related project that has binary references. Any references found will be loaded into Reflector.
Note: ReflectorLink does not yet support resolving items clicked in the code document. Only the related project is used to determine what to load into Reflector.
Solution Explorer
There are several scenarios where Reflector can be launched in Solution Explorer. These are:
- Solution node
- Project node
- Project References node
- Project Reference node
- Solution Items
In each scenario, the Reflector menu item will only be enabled if binary references can be found. For solution items, the menu item will only be displayed if the solution item selected is an exe or dll file.
Solution node
Right-click on the solution node and select Reflector.

When launching Reflector from a solution node, ReflectorLink will determine the set of binary references for each project in the solution. Any references found will be loaded into Reflector.
Project node
Right-click on a project node and select Reflector.

When launching Reflector from a project node, ReflectorLink will determine the set of binary references for the project. Any references found will be loaded into Reflector.
Project References node
Right-click on the References node in a project and select Reflector.

When launching Reflector from a References node, ReflectorLink will determine the set of binary references for the related project. Any references found will be loaded into Reflector.
Project Reference node
Right-click on a reference node in a project and select Reflector.

When launching Reflector from a reference node, ReflectorLink will determine whether the reference is a binary reference or a project reference. The menu item will be enabled if the reference is a binary reference and will load it into Reflector when launched.

If the reference is a project reference, the menu item will be disabled.
Solution Item node
Right-click on a solution item node that is an exe or dll and select Reflector.

When launching Reflector from a solution item node, ReflectorLink will determine whether the item is an exe or dll file. The menu item will be invisible if the item is not an exe or dll. The selected item will be loaded into Reflector when launched.
ReflectorLink 1.0 can be downloaded from here.
Tags: Extensibility, ReflectorLink
b9d99b96-b5c3-47ac-8df6-a242486a362d|0|.0