Skip to content

Releases: PandaWood/ExceptionReporter.NET

5.0

08 Jan 23:16
Compare
Choose a tag to compare

Breaking changes

  • IViewMaker.ShowError method dropped the 2nd argument description - this is now taken from localized resources. This will only affect users who used the API to swap the default view with their own - this feature was more of a novelty, I doubt anyone used it
  • ExceptionReportInfo property BackgroundColor is now a hex color code string, not a System.Drawing.Color object. This will only affect users who set a custom background color (ie overrid the default background color)
  • The region text box is removed (was not used in code and is unlikely to be used by anyone)

New Features

  • Saving zip file now sets the file extension of the template type it is using (ie markdown/txt/html)

WPF Version

  • This is kind of abeta as the WPF version doesn't have a nuget library and is missing some features like screenshots and internalization - see my WPF announcement comment for more details
  • A Demo using the WPF version of Exception Reporter is in code src/Demos/WPF
  • Getting the WPF version ready required some refactoring and the use of a "Shared Project" in Visual Studio and is one of the reasons to make this new release - to solidify the shared code dependencies and get the WPF version on the road

Dependencies Updated

  • DotNetZip from 1.11 to 1.15
  • Simple-MAPI.NET 1.1 to 1.2

4.0.1

28 Aug 11:13
Compare
Choose a tag to compare

This is just an addendum release with 2 minor fixes:

  • Don't print company name on Email button in "More Detail" mode - as it sometimes doesn't fit
  • A few grammar corrections in the XML comments in ExceptionReportInfo

v4.0 (Templates)

26 Aug 09:09
Compare
Choose a tag to compare

Breaking Changes (all minor)

  • #34 Remove Contact Tab and associated config: ShowContactTab, ContactEmail, WebUrl, Phone, Fax
    This may not actually effect any users because the Contact Tab was switched off by default and... what's a Fax?
  • Rename config ShowMoreLessDetail to ShowLessDetailButton - this is because we always show "More" and optionally show "Less"
  • ShowFullDetail now defaults to false (since it's for advanced/technical users, it shouldn't be the default)
  • Properties marked as [Obsolete] last version have been removed

New Features

Report Templates - #25

  • Reports can be rendered in Text, HTML or Markdown (there are presets for these)
  • Custom templates can also be passed in (via string) - so sky's the limit there
  • The templating engine used is Handlebars - which is almost identical to Mustache
  • Internally, this removes a whole bunch of string concatenating logic - which was unwieldy and difficult to change and test
  • Though it does introduce a new dependency on v1.9 of Handlebars.NET
  • New configuration for report templates are (by example):
    • er.Config.ReportTemplateFormat = TemplateFormat.Text // Html/Markdown
    • er.Config.ReportCustomTemplate = "Your template {{App.Name}}
  • To create your own custom templates, you'll need to know the Model that is passed to it - see class ReportModel
  • See also the preset templates in the solution under "Templates" folder for examples

Fixes

  • #29 - List of assemblies is inconsistent between interface listing and report output
  • #28 - List of assemblies does not include the main assembly (only referencing assemblies)
  • #35 - Fixed button text in "More Detail" mode to say "Send" instead of "Email" if ReportSendMethod was "WebService"

Internal

  • Worked on souping up XML/doc comments inExceptionReportInfo - they are now very thorough
  • Even replaced other internal code such as the introductory email text with a template - makes things easier to change/edit
  • Test coverage is getting fairly respectable

3.0.1

12 Aug 03:08
Compare
Choose a tag to compare

Just a single fix since 3.0

  • Immediately dispose the image used by taking a screenshot to cater for the screenshot now being taken during the attachment process and could potentially be called multiple times while only disposing once

v3.0 (WebService)

11 Aug 12:51
Compare
Choose a tag to compare

Breaking Changes

There is one main breaking change we couldn't avoid:

  • the EnumExceptionReportInfo.MailMethod - changes to
    ReportSendMethod SendMethod { get; set; } = ReportSendMethod.None;

This was necessary due to the addition of the WebService option.
NB the enum now has a default of None so even if you didn't use this, you might need to set it to SimpleMAPI if you relied on the previous enum default
It also fixes the annoying fact that the old enum was inside the ExceptionReporterInfo class requiring EmailMethod = ExceptionReporterInfo.SimpleMAPI

The only other breaking changes are for users who explicitly used the class ExceptionReportGenerator:

  • ExceptionReportGenerator has been renamed to just ReportGenerator and the public method CreateExceptionReport() has been renamed to just Generate() - the old method has been set as [Obsolete] to help with refactoring
  • The method ExceptionReportGenerator.SendReportByEmail() is removed - and replaced by ExeptionReporter.Send()
  • IEmailSendEvent changes to IReportSendEvent (though it's unlikely anyone used this) - this is the event that can be implemented and passed to the Send() method to receive the complete/error events on the calling thread

New Features

Send to WebService - issue #8

  • A JSON HTTP "POST" is sent to the new URL configuration property WebServiceUrl
  • The JSON properties are determined by a new DataContract class named ReportPacket - consisting of
{
  "AppName" : "my app",
  "AppVersion": "1.0.1",
  "ExceptionMessage" : "a message",
  "ExceptionReport" : "report here..."
} 
  • There is also configuration for a timeout WebServiceTimeout - which defaults to 15 seconds
  • The requirements for the WebService are illustrated by the new .NET Core project in the solution called WebService.ExceptionReporter - which is fully functioning and consumes reports sent to it by ExceptionReporter
  • Configuration to setup the new WebService option is:
    exceptionReporter.Config.SendMethod = ReportSendMethod.WebService;
    exceptionReporter.Config.WebServiceUrl = "http://localhost:24513/api/er";
    

Silent Sending of Reports - issue #21

  • A report could already be sent silently by using the class ExceptionReportGenerator... However it is now condensed and combined with WebService option into a new method on the ExceptionReporter class:
    public void Send(params Exception[] exceptions)
    which sits aside the similar existing method:
    public void Show(params Exception[] exceptions)
    Send will use the configured ReportSendMethod (ie SMTP/WebService)

New configuration ExceptionDateKind

Whether to report the date/time of the exception in local time or Coordinated Universal Time (UTC)
public DateTimeKind ExceptionDateKind { get; set; } = DateTimeKind.Utc;

New configuration UseDefaultCredentials

This allows an SMTP email to be sent with the credentials of the logged in user

New configuration SmtpMailPriority

Sets the equivalent property on SmtpClient sender: MailPriority

Fixes

Cater for ClickOnce when retrieving AppVersion

The population of the AppVersion property now checks to see if the app is a ClickOnce application, and if so, retrieves the published version

SMTP Port now defaults to port 25 (not 0) if not set

Just frees the user from having to set the port if the default is required - technically we just don't set the port and the SmtpClient class uses it's own knowledge of the default port.

Less Detailed Mode issues fixed - issue #24

Fixed the Less Detail mode able to be resized (because there is a dialog underneath and it doesn't really work) Also some odd pixels were showing through (bottom left) was fixed as well (positioning)

API Changes (backward compatible)

ExceptionReportInfo and classes exposed to users move from namespace ExceptionReporting.Core into ExceptionReporting

This won't break any code of itself, because the latter namespace is already required for ExceptionReporter class.
The Using statement using ExceptionReporting.Core; can be deleted from all user code (ie it was an accident that using ExceptionReporter required the importing/using of 2 separate namespaces)

Anything set as [Obsolete] will be removed in the next major release - v4.0 - in keeping with SemVer principles.

v2.4.2

22 Jul 02:15
Compare
Choose a tag to compare

Since the last release:

Changes:

  • New config to 'ShowEmailButton' - defaults to true (ie backwards compatible) - issue #10
  • Remove cr/lf (carriage return/line feed) from email subject before creating email to avoid errors in the case of SMTP MailMessage - issue #9
  • Add some properties to the ExceptionReport object for better access to report properties - issue #14

Fixes:

  • Fix 'user explanation/message' textbox not fitting/docking properly in it's allotted space - issue #15
  • Remove the project icon "warning.ico" to ensure that the ExceptionReporter.NET nuget package can be converted to the new "PackageReference" format without odd compile errors - issue #19
  • Remove interface fields for 'UserName' and 'MachineName' - which were empty after properties were removed in a recent change - issue #15

v2.3.0

08 Oct 06:16
Compare
Choose a tag to compare

Changes:

  • new config 'AttachmentFilename' (default is ExceptionReport.zip)
  • access to sending a report via email to API for dialogless workflow
  • remove system information 'UserName' and 'MachineName' from report (privacy concern)

Fixes:

  • fix default message for smtp mail send completion to cater for success/failure
  • add dispose to MailMessage and SmtpClient on SendCompleted (potential memory leak)

Internal:

  • update nunit to 3.7
  • Demo caters to using MailSlurper

v2.2.1

13 Jun 10:01
Compare
Choose a tag to compare

Slight Change

  • screenshot is now added to a single zip file for attachment (same zip file used by optional additional files) ie only zip files are now attached to emails

Fixes

  • fix for case where already zipped file was added to attached files
  • fix UI label for email success/fail

v2.2

10 Jun 07:28
Compare
Choose a tag to compare
v2.2 Pre-release
Pre-release

New Feature

  • Automatically compress all additional files that are specified for attachment into a single zip file (excluding files already with .zip extension)

Fixes/Changes:

  • Fix SMTP support including adding SSL/credentials and to be properly configurable via code. Also added specific SMTP error display for diagnosis
  • Removed XML config in favor of code config. The "Config" tab is also therefore removed. The idea here would be that you'll either hardcode some values and/or derive some from your own App config.

Internal/structural:

  • Removed embedded Win32Mapi library and switched to using a nuget dependency to include support for Simple-MAPI.NET ie for using embedded email client for emails
  • The base .NET runtime is 4.0 Client
  • The assembly is no longer signed - if I could figure out a way to provide signed/unsigned I would do it - let me know if being unsigned is a hassle
  • Removed the WPF infrastructure - the code that used reflection to determine whether the assembly was WPF/Winforms was of no use since the WPF version did not get worked on. There will be some kind of performance boost from removing this