diff --git a/src/Exceptionless/Exceptionless.csproj b/src/Exceptionless/Exceptionless.csproj
index 177bcb10..6e6ffa24 100644
--- a/src/Exceptionless/Exceptionless.csproj
+++ b/src/Exceptionless/Exceptionless.csproj
@@ -35,7 +35,6 @@
-
diff --git a/src/Exceptionless/Plugins/Default/080_VersionPlugin.cs b/src/Exceptionless/Plugins/Default/080_VersionPlugin.cs
index c7769f5e..8d870e3c 100644
--- a/src/Exceptionless/Plugins/Default/080_VersionPlugin.cs
+++ b/src/Exceptionless/Plugins/Default/080_VersionPlugin.cs
@@ -1,8 +1,7 @@
using System;
-using System.Linq;
-using System.Reflection;
using Exceptionless.Logging;
using Exceptionless.Models;
+using Exceptionless.Utility;
namespace Exceptionless.Plugins.Default {
[Priority(80)]
@@ -40,10 +39,10 @@ private string GetVersion(IExceptionlessLog log) {
if (_appVersionLoaded)
return _appVersion;
- var entryAssembly = GetEntryAssembly(log);
+ var entryAssembly = AssemblyHelper.GetEntryAssembly(log);
try {
- string version = GetVersionFromAssembly(entryAssembly);
+ string version = AssemblyHelper.GetVersionFromAssembly(entryAssembly);
if (!String.IsNullOrEmpty(version)) {
_appVersion = version;
_appVersionLoaded = true;
@@ -54,80 +53,11 @@ private string GetVersion(IExceptionlessLog log) {
log.FormattedError(typeof(VersionPlugin), ex, "Unable to get version from loaded assemblies. Error: {0}", ex.Message);
}
-#if NETSTANDARD2_0
- try {
- var platformService = Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default;
-
- _appVersion = platformService.Application.ApplicationVersion;
- _appVersionLoaded = true;
-
- return _appVersion;
- } catch (Exception ex) {
- log.FormattedError(typeof(VersionPlugin), ex, "Unable to get Platform Services instance. Error: {0}", ex.Message);
- }
-#endif
-
_appVersion = null;
_appVersionLoaded = true;
return null;
}
- private string GetVersionFromAssembly(Assembly assembly) {
- if (assembly == null)
- return null;
-
- string version = assembly.GetInformationalVersion();
- if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0"))
- version = assembly.GetFileVersion();
-
- if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0"))
- version = assembly.GetVersion();
-
- if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0")) {
- var assemblyName = assembly.GetAssemblyName();
- version = assemblyName != null ? assemblyName.Version.ToString() : null;
- }
-
- return !String.IsNullOrEmpty(version) && !String.Equals(version, "0.0.0.0") ? version : null;
- }
-
- private Assembly GetEntryAssembly(IExceptionlessLog log) {
- var entryAssembly = Assembly.GetEntryAssembly();
- if (IsUserAssembly(entryAssembly))
- return entryAssembly;
-
- try {
- var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a =>
- !a.IsDynamic
- && a != typeof(ExceptionlessClient).GetTypeInfo().Assembly
- && a != GetType().GetTypeInfo().Assembly
- && a != typeof(object).GetTypeInfo().Assembly);
-
- return assemblies.FirstOrDefault(a => IsUserAssembly(a));
- } catch (Exception ex) {
- log.FormattedError(typeof(VersionPlugin), ex, "Unable to get entry assembly. Error: {0}", ex.Message);
- }
-
- return null;
- }
-
- private bool IsUserAssembly(Assembly assembly) {
- if (assembly == null)
- return false;
-
- if (!String.IsNullOrEmpty(assembly.FullName) && (assembly.FullName.StartsWith("System.") || assembly.FullName.StartsWith("Microsoft.")))
- return false;
-
- string company = assembly.GetCompany() ?? String.Empty;
- string[] nonUserCompanies = new[] { "Exceptionless", "Microsoft" };
- if (nonUserCompanies.Any(c => company.IndexOf(c, StringComparison.OrdinalIgnoreCase) >= 0))
- return false;
-
- if (assembly.FullName == typeof(ExceptionlessClient).GetTypeInfo().Assembly.FullName)
- return false;
-
- return true;
- }
}
}
diff --git a/src/Exceptionless/Services/DefaultEnvironmentInfoCollector.cs b/src/Exceptionless/Services/DefaultEnvironmentInfoCollector.cs
index b0055cdf..f8b7bd44 100644
--- a/src/Exceptionless/Services/DefaultEnvironmentInfoCollector.cs
+++ b/src/Exceptionless/Services/DefaultEnvironmentInfoCollector.cs
@@ -4,11 +4,14 @@
using System.Linq;
using System.Net;
using System.Net.Sockets;
+using System.Reflection;
using System.Runtime.InteropServices;
+using System.Runtime.Versioning;
using System.Text;
using System.Threading;
using Exceptionless.Logging;
using Exceptionless.Models.Data;
+using Exceptionless.Utility;
namespace Exceptionless.Services {
public class DefaultEnvironmentInfoCollector : IEnvironmentInfoCollector {
@@ -154,31 +157,30 @@ private void PopulateRuntimeInfo(EnvironmentInfo info) {
}
}
-#if NETSTANDARD
- Microsoft.Extensions.PlatformAbstractions.PlatformServices computerInfo = null;
-#elif NET45
+#if NET45
Microsoft.VisualBasic.Devices.ComputerInfo computerInfo = null;
-#endif
try {
-#if NETSTANDARD
- computerInfo = Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default;
-#elif NET45
computerInfo = new Microsoft.VisualBasic.Devices.ComputerInfo();
-#endif
} catch (Exception ex) {
Log.FormattedWarn(typeof(DefaultEnvironmentInfoCollector), "Unable to get computer info. Error message: {0}", ex.Message);
}
if (computerInfo == null)
return;
+#endif
try {
#if NETSTANDARD
- info.RuntimeVersion = computerInfo.Application.RuntimeFramework.Version.ToString();
- info.Data["ApplicationBasePath"] = computerInfo.Application.ApplicationBasePath;
- info.Data["ApplicationName"] = computerInfo.Application.ApplicationName;
- info.Data["RuntimeFramework"] = computerInfo.Application.RuntimeFramework.FullName;
+ info.RuntimeVersion = Environment.Version.ToString();
+ info.Data["ApplicationBasePath"] = AppContext.BaseDirectory ?? AppDomain.CurrentDomain.BaseDirectory;
+
+
+ var entryAssembly = AssemblyHelper.GetEntryAssembly(Log);
+ if (entryAssembly != null) {
+ info.Data["ApplicationName"] = entryAssembly.GetName().Name;
+ info.Data["RuntimeFramework"] = entryAssembly.GetCustomAttribute()?.FrameworkName;
+ }
#elif NET45
info.OSName = computerInfo.OSFullName;
info.OSVersion = computerInfo.OSVersion;
diff --git a/src/Exceptionless/Utility/AssemblyHelper.cs b/src/Exceptionless/Utility/AssemblyHelper.cs
index 0e8fe6d5..ccf70e1c 100644
--- a/src/Exceptionless/Utility/AssemblyHelper.cs
+++ b/src/Exceptionless/Utility/AssemblyHelper.cs
@@ -10,6 +10,63 @@ public static Assembly GetRootAssembly() {
return Assembly.GetEntryAssembly();
}
+ public static Assembly GetEntryAssembly(IExceptionlessLog log) {
+ var entryAssembly = Assembly.GetEntryAssembly();
+ if (IsUserAssembly(entryAssembly))
+ return entryAssembly;
+
+ try {
+ var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a =>
+ !a.IsDynamic
+ && a != typeof(ExceptionlessClient).GetTypeInfo().Assembly
+ && a != typeof(object).GetTypeInfo().Assembly);
+
+ return assemblies.FirstOrDefault(a => IsUserAssembly(a));
+ }
+ catch (Exception ex) {
+ log.FormattedError(typeof(AssemblyHelper), ex, "Unable to get entry assembly. Error: {0}", ex.Message);
+ }
+
+ return null;
+ }
+
+ private static bool IsUserAssembly(Assembly assembly) {
+ if (assembly == null)
+ return false;
+
+ if (!String.IsNullOrEmpty(assembly.FullName) && (assembly.FullName.StartsWith("System.") || assembly.FullName.StartsWith("Microsoft.")))
+ return false;
+
+ string company = assembly.GetCompany() ?? String.Empty;
+ string[] nonUserCompanies = new[] { "Exceptionless", "Microsoft" };
+ if (nonUserCompanies.Any(c => company.IndexOf(c, StringComparison.OrdinalIgnoreCase) >= 0))
+ return false;
+
+ if (assembly.FullName == typeof(ExceptionlessClient).GetTypeInfo().Assembly.FullName)
+ return false;
+
+ return true;
+ }
+
+ public static string GetVersionFromAssembly(Assembly assembly) {
+ if (assembly == null)
+ return null;
+
+ string version = assembly.GetInformationalVersion();
+ if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0"))
+ version = assembly.GetFileVersion();
+
+ if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0"))
+ version = assembly.GetVersion();
+
+ if (String.IsNullOrEmpty(version) || String.Equals(version, "0.0.0.0")) {
+ var assemblyName = assembly.GetAssemblyName();
+ version = assemblyName != null ? assemblyName.Version.ToString() : null;
+ }
+
+ return !String.IsNullOrEmpty(version) && !String.Equals(version, "0.0.0.0") ? version : null;
+ }
+
public static string GetAssemblyTitle() {
// Get all attributes on this assembly
var assembly = GetRootAssembly();