I am pleased to announce the release of PostSharp 1.5 SP1, the latest and last maintenance release of the open-source branch of PostSharp. This service pack solves all bugs and issues reported for this branch so far.
As promised, there is no change in the license (except that the licensor is SharpCrafters s.r.o. instead of Gael Fraiteur). The updated source code is available.
Version 1.5 will not be maintained any more for the public. SharpCrafters will fix bugs and provide support on 1.5 only to customers who have purchased a Support Subscription for PostSharp 2.0 with extension to PostSharp 1.5, in the context of a support ticket. Note that you have to act now if you want to be eligible for support on 1.5, since the possibility to acquire a License Extension to PostSharp 1.5 will not be offered after June 1st, 2010. After this date, only customers who already acquired the license extension will be eligible for support services on PostSharp 1.5.
Also, you’ll notice that, as it was the case on postsharp.org, registration is required to download PostSharp 1.5. Registration is free and easy with your OpenID. Downloads will not be made available to people won’t have registered before the time PostSharp 2.0 RTW is released. This is because we offer PostSharp 1.5 for legacy support for existing users, not as an alternative for new users.
List of bugs solved by this service pack
The following bugs were already fixed in intermediate hot fix releases:
- Unhandled exception when more than 32 advices are added to the same method.
- Aspect are not inherited from methods of generic interface to implicit implementations of these methods
- ModuleDeclaration.FindField(FieldInfo,...) throws a BindingException when the FieldRef does not exist
- PostSharp generates RunCodeAnalysis build errors in non-Team VS
- BindingException on references to binary assemblies with the "CopyLocal" flag set to false
- Types or methods with more that 32 generic parameters (like anonymous types) crash.
- Debugging problem when putting a breakpoint on the end of the method body
- System.TypeLoadException in compile time when using ImplementMethodAspect.
- Crash when using XmlSerializer in external aspect implementation
- VB.NET Exception Filter Crash
- Advices which have a method woven by OnTargetInvocationAspect as an Operand ignored.
- PostSharp.NAntTasks.dll throws an exception while weaving
- Exception with CustomAttributeInjector when a generic type instance is passed as parameter.
- PostSharp Help is not merged into Visual Studio Help
- NotSupportedException thrown when some bad path is passed to PostSharp
- Crash when using generic constraints to generic methods
- Lack of Detail in MSBuild Task Exception
- BadImageFormatException when Gnu.Classpath.Core and Gnu.Classpath.JAXP are referenced
The following bug fixes have never been released before:
- Method InitializeAspects is invoked multiple times in the chain of constructors
- Accessing InstanceTag in a generic class results in a BadImageFormatException
- AssemblyLocator should not look into the GAC when used for Silverlight/CF
- AssemblyLocator should consider reference files with higher priority than reference directories.
- OnMethodInvocation: cannot apply on an interface method even if inheritance is enabled
- IAnnotationProvider requires CustomAttributeDeclaration instead of IAnnotationInstance
- In InstructionBlockBuilder.ProcessLexicalScope, handle all exceptions when accessing PDBs
- TypeLoadException with an aspect applied on a method of a generic struct
- Bug with multicasting aspect that holds generics
Note that all bug fixes (including test cases) from the 1.5 branch have now been merged into the 2.0 branch.
I got many questions last weeks about deploying PostSharp 2.0 to a build server and deploying licenses in the source control repository. Since these issues are somehow related, I answer them in a single post.
The updated CTP 4 (build 1009) contains two improvements that are good to know about.
1. Running PostSharp in an unattended session
Roy Osherove reported a problem when PostSharp 2.0 runs in a GUI-less build server. The cause of the issue was the tray icon of the pipe server. The new build will not attempt to open the tray icon if PostSharp detects that it runs in unattended mode.
PostSharp uses the property Environment.UserInteractive to determine whether the process is attended or not. If, for some reason, this detection gives unsuccessful, you can forbid the pipe server to open the tray icon by setting the following machine-level registry setting:
2. Installing a license in the source control repository
PostSharp makes it very easy to deploy license keys: you can include it in your source control repository. First, paste the license key in a text file. Then, you need to tell PostSharp where the license key lies. This can be done by setting the MSBuild property named PostSharpLicenseFile to the full path of the license file.
One of the way of setting an MSBuild property is to edit the project file using a text editor and include the following before importing PostSharp targets:
<!-- There should probably be line break in the property -->
There are other ways to deploy the license key. For instance, you can put it on a network share and use group policies to set the PostSharpLicenseFile environment variable to the location on the share.
Note that sharing a license key is only legal if you have a company license key (Commercial License, Site License, Global License). Since other licenses (community and personal) are bound to a specific person, they cannot be shared.
3. Licensing of build servers
Build servers don’t need their own license. PostSharp will not attempt to enforce licensing if it detects that it runs in unattended mode. Again, it uses the property Environment.UserInteractive. The TrayIconDisabled registry setting has no effect on license check.
Now, this check does not work for any reason, you may use the license key of any licensed user for the build server. This will not be consider a license infringement.
As you can see, we try to make our licensing system as no-nonsense as possible. Our philosophy is that paying customers should not be handicapped by overly restrictive license enforcement. Something that not every software (or media) publisher understands…
We were under daily assaults of people eager to buy PostSharp licenses. Now it’s ready. You can purchase licenses of PostSharp 2.0 online – or get a free community license.
Payment processing is handled by FastPay by FastSpring, an established and trusted partner with a large selection of payment types.
How it works
Clicking on the Purchase button brings you to a simple calculator designed to help you choose the best option based on the size of your team and your support requirements. Maybe you have already seen it since it’s the third most popular page of the site – just after downloads.
In order to proceed with your purchase, you need to be registered on our website. Don’t worry, you will not need to remember yet another username and password. Instead, our Login / Sign-In process uses OpenID technology.
After you specify licensee and review your order, you will be redirected to FastSpring to make a payment. You will then receive you new license by email.
PostSharp 2.0 offers free Community Edition with limited set of features. You can apply for your free Community License on the Compare PostSharp Editions page.
Online purchases are one of many steps in moving PostSharp from an open-source project to a commercial product. We have tried to make our e-shop easy, helpful and convenient and we hope your experience will confirm that.
As always, don’t hesitate to let us know, should you have any questions, concerns or suggestions. Your feedback is always welcome!
Since we announced the commercial launch of SharpCrafters, many members of the PostSharp community have expressed concerns about further support of PostSharp 1.5. With reason: version 1.5 is still the only one labeled stable, and 2.0 is still officially a technology preview.
Here are our policies for further support of PostSharp 1.5:
Rule 1. We don’t take back what we gave away
Licenses are irrevocable. If you had a license on PostSharp 1.5 yesterday, you have it forever. SharpCrafters has no right to revoke GPL/LGPL licenses.
Rule 2. We won’t even change the license on future builds of PostSharp 1.5
All future builds of PostSharp 1.5 will be licensed under original GPL/LGPL license agreements. We make this commitment to guarantee that no one gets into trouble in the middle of a project. If your team approved the PostSharp 1.5 license, there is no need to reassess your decision.
Rule 3. We will release a last service pack in a couple of weeks. Free support will then be discontinued.
In coming days, we will correct all pending bugs and release PostSharp 1.5 SP1 under GPL/LGPL.
After this service pack has been released, free support on SharpCrafters Forum will be discontinued for non-paying users. Note that the community can still seek and offer help on StackOverflow.
Rule 4. You can acquire commercial licenses and support subscriptions for PostSharp 1.5
For the symbolic amount of 19 EUR (totally, not per user), you can extend your licenses and support subscriptions of PostSharp 2.0 to PostSharp 1.5. That means that PostSharp 1.5 is dual-licensed: commercial and GPL/LGPL.
This offer is limited to June 1st, 2010. If you want licenses and support for PostSharp 1.5, you need to acquire them now, and in the price you get licenses for 2.0. Don’t forget to select the option “License Extension to PostSharp 1.5”.
Rule 5. After the last SP, bugs will be fixed only from your support subscription on a per-case basis
Bugs in PostSharp 1.5 will be solved only for customers with a valid support subscription, and we will withdraw one support case per each customer’s request.
We are taking smooth steps to move from an open-source model to a commercial model. Our principal concern is to avoid causing problems to the many folks who rely on PostSharp for serious business. However, as you all understand, we can’t provide free support forever on all versions. SharpCrafters’ new free offering is PostSharp 2.0 Community Edition, and all community users will have access to our support forum and hot fixes.
Don’t hesitate to share any concern or question by commenting this blog. Thank you in advance.