using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.Versioning; using System.Text; using System.Threading.Tasks; namespace Tango.Core.Helpers { /// /// Contains several assembly related helper methods. /// public static class AssemblyHelper { /// /// Gets the current assembly folder path. /// /// public static String GetCurrentAssemblyFolder() { string codeBase = Assembly.GetCallingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); return Path.GetDirectoryName(path); } /// /// Gets the current assembly build date. /// /// public static DateTime GetCurrentAssemblyBuildDate() { return Assembly.GetCallingAssembly().GetBuildDate(); } /// /// Gets the current assembly version. /// /// public static Version GetCurrentAssemblyVersion() { return Assembly.GetCallingAssembly().GetName().Version; } /// /// Gets the assembly version. /// /// The assembly. /// private static Version GetAssemblyVersion(Assembly assembly) { return assembly.GetName().Version; } public static Version GetTargetFrameworkVersion(Assembly assembly) { object[] list = Assembly.GetExecutingAssembly().GetCustomAttributes(true); var attribute = list.OfType().First(); return Version.Parse(attribute.FrameworkName.Replace(".NETFramework,Version=v", "")); } public static String GetAssemblyTargetFrameworkFolder(Assembly assembly) { String dotNetVersion = AssemblyHelper.GetTargetFrameworkVersion(Assembly.GetExecutingAssembly()).ToString(); String dotNetPath = $@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v{dotNetVersion}"; return dotNetPath; } } }