Source/NuGetGallery.Operations.Tools/ExceptionUtility.cs (25 lines of code) (raw):
using System;
using System.Reflection;
namespace NuGet
{
public static class ExceptionUtility
{
public static Exception Unwrap(Exception exception)
{
if (exception == null)
{
throw new ArgumentNullException("exception");
}
if (exception.InnerException == null)
{
return exception;
}
// Always return the inner exception from a target invocation exception
if (exception is AggregateException ||
exception is TargetInvocationException)
{
return exception.GetBaseException();
}
return exception;
}
}
}