Skip to content

Commit

Permalink
feature: Add .net 5 support (#184)
Browse files Browse the repository at this point in the history
* feature: Add .net 5 support

* Number of code quality improvements

* Go back to just checking that platforms generate

* change coverlet

* turn on test messages
  • Loading branch information
glennawatson authored Dec 6, 2020
1 parent e75ddf2 commit de24650
Show file tree
Hide file tree
Showing 445 changed files with 438,128 additions and 198,421 deletions.
15 changes: 12 additions & 3 deletions .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ jobs:
with:
dotnet-version: 3.1.x

- name: Install .NET 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x

- name: Add MSBuild to PATH
uses: glennawatson/[email protected]

- name: Update VS2019
shell: powershell
run: Start-Process -Wait -PassThru -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "update --passive --norestart --installpath ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise"""

- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
Expand All @@ -37,9 +49,6 @@ jobs:
run: dotnet restore
working-directory: src

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1

- name: Build
run: msbuild /t:build,pack /maxcpucount /p:NoPackageAnalysis=true /verbosity:minimal /p:Configuration=${{ env.configuration }}
working-directory: src
Expand Down
5 changes: 2 additions & 3 deletions src/Directory.build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<PackageProjectUrl>https://github.com/reactiveui/Pharmacist</PackageProjectUrl>
<PackageIconUrl>https://github.com/reactiveui/styleguide/blob/master/logo_pharmacist/main.png?raw=true</PackageIconUrl>
<PackageDescription>Produces from NuGet packages or reference assemblies System.Reactive Observables for all events within the specified target.</PackageDescription>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;events;frp;xamarin;android;ios;mac;forms;monodroid;monotouch;xamarin.android;xamarin.ios;xamarin.forms;xamarin.mac;xamarin.tvos;wpf;net;netstandard;net461;uwp;tizen;generator</PackageTags>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;events;frp;xamarin;android;ios;mac;forms;monodroid;monotouch;xamarin.android;xamarin.ios;xamarin.forms;xamarin.mac;xamarin.tvos;wpf;net;netstandard;net472;uwp;tizen;generator</PackageTags>
<PackageReleaseNotes>https://github.com/reactiveui/Pharmacist/releases</PackageReleaseNotes>
<RepositoryUrl>https://github.com/reactiveui/Pharmacist</RepositoryUrl>
<RepositoryType>git</RepositoryType>
Expand All @@ -31,7 +31,6 @@
<DebugType>Full</DebugType>
</PropertyGroup>


<ItemGroup Condition="'$(IsTestProject)' != 'true'">
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
Expand All @@ -49,7 +48,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="stylecop.analyzers" Version="1.2.0-beta.205" PrivateAssets="all" />
<PackageReference Include="stylecop.analyzers" Version="1.2.0-beta.261" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.1" PrivateAssets="all" />
<PackageReference Include="Roslynator.Analyzers" Version="3.0.0" PrivateAssets="All" />
</ItemGroup>
Expand Down
206 changes: 206 additions & 0 deletions src/ICSharpCode.Decompiler/DecompilerException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Security;
using System.Text;

using ICSharpCode.Decompiler.Metadata;
using ICSharpCode.Decompiler.TypeSystem;

namespace ICSharpCode.Decompiler
{
/// <summary>
/// Description of DecompilerException.
/// </summary>
public class DecompilerException : Exception, ISerializable
{
public string AssemblyName => File.Name;

public string FileName => File.FileName;

public IEntity DecompiledEntity { get; }
public IModule Module { get; }
public PEFile File { get; }

public DecompilerException(MetadataModule module, IEntity decompiledEntity,
Exception innerException, string message = null)
: base(message ?? GetDefaultMessage(decompiledEntity), innerException)
{
this.File = module.PEFile;
this.Module = module;
this.DecompiledEntity = decompiledEntity;
}

public DecompilerException(PEFile file, string message, Exception innerException)
: base(message, innerException)
{
this.File = file;
}

static string GetDefaultMessage(IEntity entity)
{
if (entity == null)
return "Error decompiling";
return $"Error decompiling @{MetadataTokens.GetToken(entity.MetadataToken):X8} {entity.FullName}";
}

// This constructor is needed for serialization.
protected DecompilerException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}

public override string StackTrace => GetStackTrace(this);

public override string ToString() => ToString(this);

string ToString(Exception exception)
{
if (exception == null)
throw new ArgumentNullException(nameof(exception));
var exceptionType = GetTypeName(exception);
var stacktrace = GetStackTrace(exception);
while (exception.InnerException != null)
{
exception = exception.InnerException;

stacktrace = GetStackTrace(exception) + Environment.NewLine
+ "-- continuing with outer exception (" + exceptionType + ") --" + Environment.NewLine
+ stacktrace;
exceptionType = GetTypeName(exception);
}
return this.Message + Environment.NewLine
+ $"in assembly \"{this.FileName}\"" + Environment.NewLine
+ " ---> " + exceptionType + ": " + exception.Message + Environment.NewLine
+ stacktrace;
}

static string GetTypeName(Exception exception)
{
var type = exception.GetType().FullName;
if (exception is ExternalException || exception is IOException)
return type + " (" + Marshal.GetHRForException(exception).ToString("x8") + ")";
else
return type;
}

static string GetStackTrace(Exception exception)
{
// Output stacktrace in custom format (very similar to Exception.StackTrace
// property on English systems).
// Include filenames where available, but no paths.
var stackTrace = new StackTrace(exception, true);
var b = new StringBuilder();
for (var i = 0; i < stackTrace.FrameCount; i++)
{
var frame = stackTrace.GetFrame(i);
var method = frame.GetMethod();
if (method == null)
continue;

if (b.Length > 0)
b.AppendLine();

b.Append(" at ");
var declaringType = method.DeclaringType;
if (declaringType != null)
{
b.Append(declaringType.FullName.Replace('+', '.'));
b.Append('.');
}
b.Append(method.Name);
// output type parameters, if any
if ((method is MethodInfo) && ((MethodInfo)method).IsGenericMethod)
{
var genericArguments = ((MethodInfo)method).GetGenericArguments();
b.Append('[');
for (var j = 0; j < genericArguments.Length; j++)
{
if (j > 0)
b.Append(',');
b.Append(genericArguments[j].Name);
}
b.Append(']');
}

// output parameters, if any
b.Append('(');
var parameters = method.GetParameters();
for (var j = 0; j < parameters.Length; j++)
{
if (j > 0)
b.Append(", ");
if (parameters[j].ParameterType != null)
{
b.Append(parameters[j].ParameterType.Name);
}
else
{
b.Append('?');
}
if (!string.IsNullOrEmpty(parameters[j].Name))
{
b.Append(' ');
b.Append(parameters[j].Name);
}
}
b.Append(')');

// source location
if (frame.GetILOffset() >= 0)
{
string filename = null;
try
{
var fullpath = frame.GetFileName();
if (fullpath != null)
filename = Path.GetFileName(fullpath);
}
catch (SecurityException)
{
// StackFrame.GetFileName requires PathDiscovery permission
}
catch (ArgumentException)
{
// Path.GetFileName might throw on paths with invalid chars
}
b.Append(" in ");
if (filename != null)
{
b.Append(filename);
b.Append(":line ");
b.Append(frame.GetFileLineNumber());
}
else
{
b.Append("offset ");
b.Append(frame.GetILOffset());
}
}
}

return b.ToString();
}
}
}
3 changes: 3 additions & 0 deletions src/ICSharpCode.Decompiler/DecompilerNuGetPackageIcon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit de24650

Please sign in to comment.