Skip to content

Commit bf2b163

Browse files
Merge pull request #158 from bugsnag/release/3.1.0
Release v3.1.0
2 parents 55d4028 + 20f06cf commit bf2b163

File tree

16 files changed

+77
-278
lines changed

16 files changed

+77
-278
lines changed

.assets/bugsnag.png

3.85 KB
Loading

.config/dotnet-tools.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"cake.tool": {
6+
"version": "2.2.0",
7+
"commands": [
8+
"dotnet-cake"
9+
]
10+
}
11+
}
12+
}

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Changelog
22
=========
33

4+
## 3.1.0 (2022-06-15)
5+
6+
### Enhancements
7+
8+
The `Bugsnag` and `Bugsnag.AspNet.Core` packages now officially support .NET Core 3.x, .NET 5 and .NET 6.
9+
410
## 3.0.1 (2022-03-24)
511

612
### Bug fixes

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
image: Visual Studio 2017
1+
image: Visual Studio 2022
22
install:
33
- set PATH=C:\Ruby25-x64\bin;%PATH%
44
build_script:
5-
- ps: .\build.ps1 -Target Appveyor
5+
- ps: .\build.ps1 --target Appveyor
66
after_build:
77
- ps: 7z a build\bugsnag.zip build\Release\**\Bugsnag*.dll build\Release\**\Bugsnag*.pdb
88
test: off

build.cake

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
#tool "nuget:?package=xunit.runner.console"
2-
#addin nuget:?package=Cake.SemVer
3-
#addin nuget:?package=semver&version=2.0.4
41

52
var solution = File("./Bugsnag.sln");
63
var target = Argument("target", "Default");
@@ -28,21 +25,27 @@ Task("Build")
2825
.SetConfiguration(configuration));
2926
});
3027

31-
Task("Test")
32-
.IsDependentOn("Build")
33-
.Does(() => {
34-
var testAssemblies = GetFiles($"{buildDir}/**/*.Tests.dll");
35-
XUnit2(testAssemblies,
36-
new XUnit2Settings {
37-
ArgumentCustomization = args => {
38-
if (AppVeyor.IsRunningOnAppVeyor)
39-
{
40-
args.Append("-appveyor");
41-
}
42-
return args;
28+
Task("Test")
29+
.IsDependentOn("Build")
30+
.Does(() => {
31+
var testAssemblies = GetFiles($"{buildDir}/**/*.Tests.dll");
32+
var settings = new DotNetTestSettings
33+
{
34+
Configuration = configuration,
35+
ArgumentCustomization = args => {
36+
if (AppVeyor.IsRunningOnAppVeyor)
37+
{
38+
args.Append("-appveyor");
4339
}
44-
});
45-
});
40+
return args;
41+
}
42+
};
43+
44+
foreach(var file in testAssemblies)
45+
{
46+
DotNetTest(file.FullPath, "MSTest.MapInconclusiveToFailed=true", settings);
47+
}
48+
});
4649

4750
Task("Pack")
4851
.IsDependentOn("Test")
@@ -89,7 +92,7 @@ Task("MazeRunner")
8992
.IsDependentOn("Pack")
9093
.Does(() => {
9194
StartProcess("cmd", "/c bundle install");
92-
var mazeRunner = StartProcess("cmd", $"/c \"set BUGSNAG_VERSION={version} && bundle exec bugsnag-maze-runner\"");
95+
var mazeRunner = StartProcess("cmd", $"/c \"set BUGSNAG_VERSION={version} && bundle exec bugsnag-maze-runner --verbose\"");
9396
if (mazeRunner != 0) {
9497
throw new Exception("maze-runner failed");
9598
}

build.ps1

Lines changed: 8 additions & 231 deletions
Original file line numberDiff line numberDiff line change
@@ -1,234 +1,11 @@
1-
##########################################################################
2-
# This is the Cake bootstrapper script for PowerShell.
3-
# This file was downloaded from https://github.com/cake-build/resources
4-
# Feel free to change this file to fit your needs.
5-
##########################################################################
1+
Set-Location -LiteralPath $PSScriptRoot
62

7-
<#
3+
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = '1'
4+
$env:DOTNET_CLI_TELEMETRY_OPTOUT = '1'
5+
$env:DOTNET_NOLOGO = '1'
86

9-
.SYNOPSIS
10-
This is a Powershell script to bootstrap a Cake build.
7+
dotnet tool restore
8+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
119

12-
.DESCRIPTION
13-
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
14-
and execute your Cake build script with the parameters you provide.
15-
16-
.PARAMETER Script
17-
The build script to execute.
18-
.PARAMETER Target
19-
The build script target to run.
20-
.PARAMETER Configuration
21-
The build configuration to use.
22-
.PARAMETER Verbosity
23-
Specifies the amount of information to be displayed.
24-
.PARAMETER ShowDescription
25-
Shows description about tasks.
26-
.PARAMETER DryRun
27-
Performs a dry run.
28-
.PARAMETER Experimental
29-
Uses the nightly builds of the Roslyn script engine.
30-
.PARAMETER Mono
31-
Uses the Mono Compiler rather than the Roslyn script engine.
32-
.PARAMETER SkipToolPackageRestore
33-
Skips restoring of packages.
34-
.PARAMETER ScriptArgs
35-
Remaining arguments are added here.
36-
37-
.LINK
38-
https://cakebuild.net
39-
40-
#>
41-
42-
[CmdletBinding()]
43-
Param(
44-
[string]$Script = "build.cake",
45-
[string]$Target,
46-
[string]$Configuration,
47-
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
48-
[string]$Verbosity,
49-
[switch]$ShowDescription,
50-
[Alias("WhatIf", "Noop")]
51-
[switch]$DryRun,
52-
[switch]$Experimental,
53-
[switch]$Mono,
54-
[switch]$SkipToolPackageRestore,
55-
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
56-
[string[]]$ScriptArgs
57-
)
58-
59-
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
60-
function MD5HashFile([string] $filePath)
61-
{
62-
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
63-
{
64-
return $null
65-
}
66-
67-
[System.IO.Stream] $file = $null;
68-
[System.Security.Cryptography.MD5] $md5 = $null;
69-
try
70-
{
71-
$md5 = [System.Security.Cryptography.MD5]::Create()
72-
$file = [System.IO.File]::OpenRead($filePath)
73-
return [System.BitConverter]::ToString($md5.ComputeHash($file))
74-
}
75-
finally
76-
{
77-
if ($file -ne $null)
78-
{
79-
$file.Dispose()
80-
}
81-
}
82-
}
83-
84-
function GetProxyEnabledWebClient
85-
{
86-
$wc = New-Object System.Net.WebClient
87-
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
88-
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
89-
$wc.Proxy = $proxy
90-
return $wc
91-
}
92-
93-
Write-Host "Preparing to run build script..."
94-
95-
if(!$PSScriptRoot){
96-
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
97-
}
98-
99-
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
100-
$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins"
101-
$MODULES_DIR = Join-Path $TOOLS_DIR "Modules"
102-
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
103-
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
104-
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
105-
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
106-
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
107-
$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config"
108-
$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config"
109-
110-
# Make sure tools folder exists
111-
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
112-
Write-Verbose -Message "Creating tools directory..."
113-
New-Item -Path $TOOLS_DIR -Type directory | out-null
114-
}
115-
116-
# Make sure that packages.config exist.
117-
if (!(Test-Path $PACKAGES_CONFIG)) {
118-
Write-Verbose -Message "Downloading packages.config..."
119-
try {
120-
$wc = GetProxyEnabledWebClient
121-
$wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
122-
Throw "Could not download packages.config."
123-
}
124-
}
125-
126-
# Try find NuGet.exe in path if not exists
127-
if (!(Test-Path $NUGET_EXE)) {
128-
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
129-
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) }
130-
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
131-
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
132-
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
133-
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
134-
}
135-
}
136-
137-
# Try download NuGet.exe if not exists
138-
if (!(Test-Path $NUGET_EXE)) {
139-
Write-Verbose -Message "Downloading NuGet.exe..."
140-
try {
141-
$wc = GetProxyEnabledWebClient
142-
$wc.DownloadFile($NUGET_URL, $NUGET_EXE)
143-
} catch {
144-
Throw "Could not download NuGet.exe."
145-
}
146-
}
147-
148-
# Save nuget.exe path to environment to be available to child processed
149-
$ENV:NUGET_EXE = $NUGET_EXE
150-
151-
# Restore tools from NuGet?
152-
if(-Not $SkipToolPackageRestore.IsPresent) {
153-
Push-Location
154-
Set-Location $TOOLS_DIR
155-
156-
# Check for changes in packages.config and remove installed tools if true.
157-
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
158-
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
159-
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
160-
Write-Verbose -Message "Missing or changed package.config hash..."
161-
Remove-Item * -Recurse -Exclude packages.config,nuget.exe
162-
}
163-
164-
Write-Verbose -Message "Restoring tools from NuGet..."
165-
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
166-
167-
if ($LASTEXITCODE -ne 0) {
168-
Throw "An error occured while restoring NuGet tools."
169-
}
170-
else
171-
{
172-
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
173-
}
174-
Write-Verbose -Message ($NuGetOutput | out-string)
175-
176-
Pop-Location
177-
}
178-
179-
# Restore addins from NuGet
180-
if (Test-Path $ADDINS_PACKAGES_CONFIG) {
181-
Push-Location
182-
Set-Location $ADDINS_DIR
183-
184-
Write-Verbose -Message "Restoring addins from NuGet..."
185-
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`""
186-
187-
if ($LASTEXITCODE -ne 0) {
188-
Throw "An error occured while restoring NuGet addins."
189-
}
190-
191-
Write-Verbose -Message ($NuGetOutput | out-string)
192-
193-
Pop-Location
194-
}
195-
196-
# Restore modules from NuGet
197-
if (Test-Path $MODULES_PACKAGES_CONFIG) {
198-
Push-Location
199-
Set-Location $MODULES_DIR
200-
201-
Write-Verbose -Message "Restoring modules from NuGet..."
202-
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`""
203-
204-
if ($LASTEXITCODE -ne 0) {
205-
Throw "An error occured while restoring NuGet modules."
206-
}
207-
208-
Write-Verbose -Message ($NuGetOutput | out-string)
209-
210-
Pop-Location
211-
}
212-
213-
# Make sure that Cake has been installed.
214-
if (!(Test-Path $CAKE_EXE)) {
215-
Throw "Could not find Cake.exe at $CAKE_EXE"
216-
}
217-
218-
219-
220-
# Build Cake arguments
221-
$cakeArguments = @("$Script");
222-
if ($Target) { $cakeArguments += "-target=$Target" }
223-
if ($Configuration) { $cakeArguments += "-configuration=$Configuration" }
224-
if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" }
225-
if ($ShowDescription) { $cakeArguments += "-showdescription" }
226-
if ($DryRun) { $cakeArguments += "-dryrun" }
227-
if ($Experimental) { $cakeArguments += "-experimental" }
228-
if ($Mono) { $cakeArguments += "-mono" }
229-
$cakeArguments += $ScriptArgs
230-
231-
# Start Cake
232-
Write-Host "Running build script..."
233-
&$CAKE_EXE $cakeArguments
234-
exit $LASTEXITCODE
10+
dotnet cake @args
11+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

features/steps/website_steps.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
When("I run the console app {string} with {string}") do |name, args|
88
path = File.join(Dir.pwd, "features", "fixtures", name)
99
nuget_package_path = File.join(Dir.pwd, "build", "packages")
10-
run_command("dotnet nuget locals all --clear")
11-
run_command("dotnet add #{path} package -v #{ENV['BUGSNAG_VERSION']} bugsnag")
10+
run_command("dotnet add #{path} package bugsnag --version #{ENV['BUGSNAG_VERSION']} --no-restore")
11+
run_command("dotnet restore #{path} --source #{nuget_package_path} --no-cache")
1212
run_command(@script_env || {}, "dotnet run -p #{path} -- #{args}")
1313
end
1414

src/Bugsnag/Payload/StackTraceLine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public IEnumerator<StackTraceLine> GetEnumerator()
2828
var stackFrames = new System.Diagnostics.StackTrace(_originalException, true).GetFrames();
2929

3030
#if !NETSTANDARD1_3
31-
if (stackFrames == null)
31+
if (stackFrames == null || stackFrames.Length == 0)
3232
{
3333
// this usually means that the exception has not been thrown so we need
3434
// to try and create a stack trace at the point that the notify call

src/Directory.build.props

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<Version></Version>
55
<Copyright>© 2018 Bugsnag Inc.</Copyright>
66
<PackageTags>bugsnag crash exception-handling exception-reporting exception-handler error-monitoring error-reporting error-handling unhandled-exceptions debug exceptions error errors bug bugs crash-reporting crash-reporting-tool error-log diagnostic</PackageTags>
7-
<PackageLicenseUrl>https://raw.githubusercontent.com/bugsnag/bugsnag-dotnet/master/LICENSE.txt</PackageLicenseUrl>
7+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
88
<PackageProjectUrl>https://github.com/bugsnag/bugsnag-dotnet</PackageProjectUrl>
9-
<PackageIconUrl>https://s3.amazonaws.com/bugsnag.com/images/square-logo-small.png</PackageIconUrl>
9+
<PackageIcon>bugsnag.png</PackageIcon>
1010
<DisableImplicitFrameworkReferences Condition="'$(TargetFramework)' != 'netstandard1.3' AND '$(TargetFramework)' != 'netstandard2.0'">true</DisableImplicitFrameworkReferences>
1111
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
1212
<LangVersion>7.1</LangVersion>
@@ -15,4 +15,7 @@
1515
<AssemblyOriginatorKeyFile>$(MSBuildStartupDirectory)\Bugsnag.snk</AssemblyOriginatorKeyFile>
1616
<SignAssembly>true</SignAssembly>
1717
</PropertyGroup>
18+
<ItemGroup>
19+
<None Include="$(MSBuildThisFileDirectory)../.assets/bugsnag.png" Pack="true" PackagePath=""/>
20+
</ItemGroup>
1821
</Project>

0 commit comments

Comments
 (0)