Releases: PandaWood/ExceptionReporter.NET
5.0
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 aSystem.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 a
beta
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
v4.0 (Templates)
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
toShowLessDetailButton
- 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 in
ExceptionReportInfo
- 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
v3.0 (WebService)
Breaking Changes
There is one main breaking change we couldn't avoid:
- the Enum
ExceptionReportInfo.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 justReportGenerator
and the public methodCreateExceptionReport()
has been renamed to justGenerate()
- the old method has been set as[Obsolete]
to help with refactoring- The method
ExceptionReportGenerator.SendReportByEmail()
is removed - and replaced byExeptionReporter.Send()
IEmailSendEvent
changes toIReportSendEvent
(though it's unlikely anyone used this) - this is the event that can be implemented and passed to theSend()
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 namedReportPacket
- 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 theExceptionReporter
class:
public void Send(params Exception[] exceptions)
which sits aside the similar existing method:
public void Show(params Exception[] exceptions)
Send
will use the configuredReportSendMethod
(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
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
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
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
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