Geeks With Blogs

News My Blog has been MOVED to https://mfreidge.wordpress.com

Michael Freidgeim's OLD Blog My Blog has been MOVED to https://mfreidge.wordpress.com
I was upgrading our solutions from PostSharp 2 to PostSharp 3. The small solution based on cache attribute from http://cache.codeplex.com/ was upgraded without any problems.

Upgrading my main solution by installing nuget package PostSharp also was quite well. 

The only annoying thing was that installer added 
RequiresPostsharp.cs file to all projects, that already had SkipPostSharp=true setting and I had manually remove them
The issue was reported at
but Gael unfortunately  considers this behavior "by design".
 
More work was to convert   psproj files PostSharp.Toolkit.Diagnostics ver 2.1 to new PostSharp.Patterns.Diagnostics.3.0.
There was no documentation.I've only found a short notice at the bottom of 

PostSharp Toolkits 2.1 need to be uninstalled using NuGet. Instead, you can install PostSharp Pattern Libraries 3 from NuGet. 
Namespaces and some type names have changed. 

Uninstall for 2.1 suggested to remove NLog nuget package, which we are using regardless of PostSharp.

I've run 
Install-Package PostSharp.Patterns.Diagnostics.NLog

The install of PostSharp.Patterns.Diagnostics.NLog didn't like the latest version of Nlog, but Gael 
fixed it recently(http://support.sharpcrafters.com/discussions/problems/1211-nlog-weaver-version-error).

The installs haven't changed the content of PSPROJ files and I had  to manually update them.
1. Deleted old references to DLL and inserted dg:LoggingProfiles profile element
 
 <!--<Using File="..\..\..\..\packages\PostSharp.Toolkit.Diagnostics.NLog.2.1.1.12\tools\PostSharp.Toolkit.Diagnostics.Weaver.NLog.dll"/>
  <Using File="..\..\..\..\packages\PostSharp.Toolkit.Diagnostics.2.1.1.12\tools\PostSharp.Toolkit.Diagnostics.Weaver.dll" /> -->
2. After advise from Gael  I've  removed the Task element and change <Data Name="XmlMulticast">into simply <Multicast>.
3. I've also replaced namespace and DLL names in LogAttribute xmlns properties to be "clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics"
The psproj file becomes similar to the following and seemed to work.

<?xml version="1.0" encoding="utf-8"?>
< Project xmlns="http://support.sharpcrafters.com/discussions/problems/1264/r?go=aHR0cDovL3N1cHBvcnQuc2hhcnBjcmFmdGVycy5jb20vZGlzY3Vzc2lvbnMvcHJvYmxlbXMvMTI2NC9yP2dvPWFIUjBjRG92TDNOMWNIQnZjblF1YzJoaGNuQmpjbUZtZEdWeWN5NWpiMjB2WkdselkzVnpjMmx2Ym5NdmNISnZZbXhsYlhNdk1USTJOQzl5UDJkdlBXRklVakJqUkc5MlRETk9hbUZIVm5SWldFMTFZMGM1ZW1SSVRtOVpXRXAzVEcwNWVWcDVPSGhNYWtGMldUSTVkVnB0Ykc1a1dFcG9aRWRzZG1KcFduaGtWemt3; xmlns:dg="clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics">
  <Property Name="LoggingBackEnd" Value="nlog" />
  <Using File="..\packages\PostSharp.Patterns.Diagnostics.3.0.26\tools\PostSharp.Patterns.Diagnostics.Weaver.dll" />
  <Using File="..\packages\PostSharp.Patterns.Diagnostics.NLog.3.0.26\tools\PostSharp.Patterns.Diagnostics.Weaver.NLog.dll" />
  <dg:LoggingProfiles>
    <dg:LoggingProfile Name="Exceptions" OnExceptionOptions="IncludeParameterType | IncludeParameterName | IncludeParameterValue | IncludeThisArgument" OnEntryLevel="None" OnSuccessLevel="None" />
  </dg:LoggingProfiles>
  <Multicast>

      <LogAttribute xmlns="clr-namespace:PostSharp.Toolkit.Diagnostics;assembly:PostSharp.Toolkit.Diagnostics" AttributeTargetAssemblies="Applications.MyApp" AttributeTargetTypes=" Applications.MyApp.MyCustomer" AttributeTargetMembers="*" OnExceptionLevel="Warning" OnExceptionOptions="IncludeParameterValue" />

   </Multicast>

</Project>

It was deployed to CI test environment, where we noticed delays and timeouts. I found that despite that only  OnExceptionLevel and  OnExceptionOptions were specified, the new LogAttribute generated verbose trace information, which caused severe performance hit.

4. I had to change LogAttribute to LogExceptionAttribute and remove OnExceptionLevel and OnExceptionOption properties.
 
Posted on Sunday, June 2, 2013 2:17 PM .Net Framework , PostSharp | Back to top


Comments on this post: Upgrading PostSharp from ver 2.1 to new version 3.0

# re: Upgrading PostSharp from ver 2.1 to new version 3.0
Requesting Gravatar...
Great information
Left by Dennis on Jun 10, 2013 10:30 PM

Your comment:
 (will show your gravatar)


Copyright © Michael Freidgeim | Powered by: GeeksWithBlogs.net