// Copyright Keysight Technologies 2012-2019 // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, you can obtain one at http://mozilla.org/MPL/2.0/. using System; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; namespace tap; class Program { static void Main(string[] args) { CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; // OPENTAP_INIT_DIRECTORY: Executing assembly is null when running with 'dotnet tap.dll' hence the following environment variable can be used. Environment.SetEnvironmentVariable("OPENTAP_INIT_DIRECTORY", Path.GetDirectoryName(typeof(Program).Assembly.Location)); try { string appDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); Assembly load(string file) { file = Path.Combine(appDir, file); if (File.Exists(file) == false) return null; return Assembly.LoadFrom(file); } var asm = load("Packages/OpenTAP/OpenTap.Cli.dll") ?? load("OpenTap.Cli.dll"); if (asm == null) { Console.WriteLine("Missing OpenTAP CLI. Please try reinstalling OpenTAP."); Environment.ExitCode = 8; return; } } catch { Console.WriteLine("Error finding OpenTAP CLI. Please try reinstalling OpenTAP."); Environment.ExitCode = 7; return; } Go(); } [MethodImpl(MethodImplOptions.NoInlining)] static void Go() { OpenTap.Cli.TapEntry.Go(); } }