Best Vstest code snippet using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.TestPluginCache.CurrentDomainAssemblyResolve
TestPluginCache.cs
Source:TestPluginCache.cs
...128 // and that succeeds.129 // Because of this assembly failure, below domain.CreateInstanceAndUnwrap() call fails with error130 // "Unable to cast transparent proxy to type 'Microsoft.VisualStudio.TestPlatform.Core.TestPluginsFramework.TestPluginDiscoverer"131 var platformAssemblyResolver = new PlatformAssemblyResolver();132 platformAssemblyResolver.AssemblyResolve += this.CurrentDomainAssemblyResolve;133 try134 {135 EqtTrace.Verbose("TestPluginCache.DiscoverTestExtensions: Discovering the extensions using extension path.");136 // Combine all the possible extensions - both default and additional.137 var allExtensionPaths = this.GetExtensionPaths(endsWithPattern);138 if (EqtTrace.IsVerboseEnabled)139 {140 EqtTrace.Verbose(141 "TestPluginCache.DiscoverTestExtensions: Discovering the extensions using allExtensionPaths: {0}", string.Join(Environment.NewLine, allExtensionPaths));142 }143 // Discover the test extensions from candidate assemblies.144 pluginInfos = this.GetTestExtensions<TPluginInfo, TExtension>(allExtensionPaths);145 if (this.TestExtensions == null)146 {147 this.TestExtensions = new TestExtensions();148 }149 this.TestExtensions.AddExtension<TPluginInfo>(pluginInfos);150 // Set the cache bool to true.151 this.TestExtensions.SetTestExtensionsCacheStatus<TPluginInfo>();152 if (EqtTrace.IsVerboseEnabled)153 {154 var extensionString = this.filterableExtensionPaths != null155 ? string.Join(",", this.filterableExtensionPaths.ToArray())156 : null;157 EqtTrace.Verbose(158 "TestPluginCache: Discovered the extensions using extension path '{0}'.",159 extensionString);160 }161 this.LogExtensions();162 }163#if NET451164 catch (ThreadAbortException)165 {166 // Nothing to do here, we just do not want to do an EqtTrace.Fail for this thread167 // being aborted as it is a legitimate exception to receive.168 if (EqtTrace.IsVerboseEnabled)169 {170 EqtTrace.Verbose("TestPluginCache.DiscoverTestExtensions: Data extension discovery is being aborted due to a thread abort.");171 }172 }173#endif174 catch (Exception e)175 {176 EqtTrace.Error("TestPluginCache: Discovery failed! {0}", e);177 throw;178 }179 finally180 {181 if (platformAssemblyResolver != null)182 {183 platformAssemblyResolver.AssemblyResolve -= this.CurrentDomainAssemblyResolve;184 platformAssemblyResolver.Dispose();185 }186 // clear the assemblies187 lock (this.resolvedAssemblies)188 {189 this.resolvedAssemblies?.Clear();190 }191 }192 return pluginInfos;193 }194 /// <summary>195 /// Use the parameter path to extensions196 /// </summary>197 /// <param name="additionalExtensionsPath">List of extension paths</param>198 /// <param name="skipExtensionFilters">Skip extension name filtering (if true)</param>199 public void UpdateExtensions(IEnumerable<string> additionalExtensionsPath, bool skipExtensionFilters)200 {201 lock (this.lockForExtensionsUpdate)202 {203 if (EqtTrace.IsVerboseEnabled)204 {205 EqtTrace.Verbose("TestPluginCache: Update extensions started. Skip filter = " + skipExtensionFilters);206 }207 var extensions = additionalExtensionsPath?.ToList();208 if (extensions == null || extensions.Count == 0)209 {210 return;211 }212 if (skipExtensionFilters)213 {214 // Add the extensions to unfilter list. These extensions will never be filtered215 // based on file name (e.g. *.testadapter.dll etc.).216 if (TryMergeExtensionPaths(this.unfilterableExtensionPaths, extensions,217 out this.unfilterableExtensionPaths))218 {219 // Set the extensions discovered to false so that the next time anyone tries220 // to get the additional extensions, we rediscover.221 this.TestExtensions?.InvalidateCache();222 }223 }224 else225 {226 if (TryMergeExtensionPaths(this.filterableExtensionPaths, extensions,227 out this.filterableExtensionPaths))228 {229 this.TestExtensions?.InvalidateCache();230 }231 }232 if (EqtTrace.IsVerboseEnabled)233 {234 var directories = this.filterableExtensionPaths.Concat(this.unfilterableExtensionPaths).Select(e => Path.GetDirectoryName(Path.GetFullPath(e))).Distinct();235 var directoryString = string.Join(",", directories);236 EqtTrace.Verbose(237 "TestPluginCache: Using directories for assembly resolution '{0}'.",238 directoryString);239 var extensionString = string.Join(",", this.filterableExtensionPaths.Concat(this.unfilterableExtensionPaths));240 EqtTrace.Verbose("TestPluginCache: Updated the available extensions to '{0}'.", extensionString);241 }242 }243 }244 /// <summary>245 /// Clear the previously cached extensions246 /// </summary>247 public void ClearExtensions()248 {249 this.filterableExtensionPaths?.Clear();250 this.unfilterableExtensionPaths?.Clear();251 this.TestExtensions?.InvalidateCache();252 }253 #endregion254 #region Utility methods255 internal IEnumerable<string> DefaultExtensionPaths256 {257 get258 {259 return this.defaultExtensionPaths;260 }261 set262 {263 if (value != null)264 {265 this.defaultExtensionPaths.AddRange(value);266 }267 }268 }269 /// <summary>270 /// The get test extensions.271 /// </summary>272 /// <param name="extensionAssembly">273 /// The extension assembly.274 /// </param>275 /// <typeparam name="TPluginInfo">276 /// Type of Test plugin info.277 /// </typeparam>278 /// <typeparam name="TExtension">279 /// Type of extension.280 /// </typeparam>281 /// <returns>282 /// The <see cref="Dictionary"/>.283 /// </returns>284 internal Dictionary<string, TPluginInfo> GetTestExtensions<TPluginInfo, TExtension>(string extensionAssembly) where TPluginInfo : TestPluginInformation285 {286 // Check if extensions from this assembly have already been discovered.287 var extensions = this.TestExtensions?.GetExtensionsDiscoveredFromAssembly<TPluginInfo>(this.TestExtensions.GetTestExtensionCache<TPluginInfo>(), extensionAssembly);288 if (extensions != null)289 {290 return extensions;291 }292 var pluginInfos = this.GetTestExtensions<TPluginInfo, TExtension>(new List<string>() { extensionAssembly });293 // Add extensions discovered to the cache.294 if (this.TestExtensions == null)295 {296 this.TestExtensions = new TestExtensions();297 }298 this.TestExtensions.AddExtension<TPluginInfo>(pluginInfos);299 return pluginInfos;300 }301 /// <summary>302 /// Gets the resolution paths for the extension assembly to facilitate assembly resolution.303 /// </summary>304 /// <param name="extensionAssembly">The extension assembly.</param>305 /// <returns>Resolution paths for the assembly.</returns>306 internal IList<string> GetResolutionPaths(string extensionAssembly)307 {308 var resolutionPaths = new List<string>();309 var extensionDirectory = Path.GetDirectoryName(Path.GetFullPath(extensionAssembly));310 resolutionPaths.Add(extensionDirectory);311 var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.GetAssemblyLocation());312 if (!resolutionPaths.Contains(currentDirectory))313 {314 resolutionPaths.Add(currentDirectory);315 }316 return resolutionPaths;317 }318 /// <summary>319 /// Gets the default set of resolution paths for the assembly resolution320 /// </summary>321 /// <returns>List of paths.</returns>322 internal IList<string> GetDefaultResolutionPaths()323 {324 var resolutionPaths = new List<string>();325 // Add the extension directories for assembly resolution326 var extensionDirectories = this.GetExtensionPaths(string.Empty).Select(e => Path.GetDirectoryName(Path.GetFullPath(e))).Distinct().ToList();327 if (extensionDirectories.Any())328 {329 resolutionPaths.AddRange(extensionDirectories);330 }331 // Keep current directory for resolution332 var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.GetAssemblyLocation());333 if (!resolutionPaths.Contains(currentDirectory))334 {335 resolutionPaths.Add(currentDirectory);336 }337 // If running in Visual Studio context, add well known directories for resolution338 var installContext = new InstallationContext(new FileHelper());339 if (installContext.TryGetVisualStudioDirectory(out string vsInstallPath))340 {341 resolutionPaths.AddRange(installContext.GetVisualStudioCommonLocations(vsInstallPath));342 }343 return resolutionPaths;344 }345 /// <summary>346 /// Get the files which match the regex pattern347 /// </summary>348 /// <param name="extensions">349 /// The extensions.350 /// </param>351 /// <param name="endsWithPattern">352 /// Pattern used to select files using String.EndsWith353 /// </param>354 /// <returns>355 /// The list of files which match the regex pattern356 /// </returns>357 protected virtual IEnumerable<string> GetFilteredExtensions(List<string> extensions, string endsWithPattern)358 {359 if (string.IsNullOrEmpty(endsWithPattern))360 {361 return extensions;362 }363 return extensions.Where(ext => ext.EndsWith(endsWithPattern, StringComparison.OrdinalIgnoreCase));364 }365 private static bool TryMergeExtensionPaths(List<string> extensionsList, List<string> additionalExtensions, out List<string> mergedExtensionsList)366 {367 if (additionalExtensions.Count == extensionsList.Count && additionalExtensions.All(extensionsList.Contains))368 {369 if (EqtTrace.IsVerboseEnabled)370 {371 var extensionString = string.Join(",", extensionsList);372 EqtTrace.Verbose(373 "TestPluginCache: Ignoring extensions merge as there is no change. Current additionalExtensions are '{0}'.",374 extensionString);375 }376 mergedExtensionsList = extensionsList;377 return false;378 }379 // Don't do a strict check for existence of the extension path. The extension paths may or may380 // not exist on the disk. In case of .net core, the paths are relative to the nuget packages381 // directory. The path to nuget directory is automatically setup for CLR to resolve.382 // Test platform tries to load every extension by assembly name. If it is not resolved, we don't throw383 // an error.384 additionalExtensions.AddRange(extensionsList);385 mergedExtensionsList = additionalExtensions.Select(Path.GetFullPath)386 .Distinct(StringComparer.OrdinalIgnoreCase).ToList();387 return true;388 }389 /// <summary>390 /// Gets the test extensions defined in the extension assembly list.391 /// </summary>392 /// <typeparam name="TPluginInfo">393 /// Type of PluginInfo.394 /// </typeparam>395 /// <typeparam name="TExtension">396 /// Type of Extension.397 /// </typeparam>398 /// <param name="extensionPaths">399 /// Extension assembly paths.400 /// </param>401 /// <returns>402 /// List of extensions.403 /// </returns>404 /// <remarks>405 /// Added to mock out dependency from the actual test plugin discovery as such.406 /// </remarks>407 private Dictionary<string, TPluginInfo> GetTestExtensions<TPluginInfo, TExtension>(IEnumerable<string> extensionPaths) where TPluginInfo : TestPluginInformation408 {409 foreach (var extensionPath in extensionPaths)410 {411 this.SetupAssemblyResolver(extensionPath);412 }413 var discoverer = new TestPluginDiscoverer();414 return discoverer.GetTestExtensionsInformation<TPluginInfo, TExtension>(extensionPaths);415 }416 private void SetupAssemblyResolver(string extensionAssembly)417 {418 IList<string> resolutionPaths;419 if (string.IsNullOrEmpty(extensionAssembly))420 {421 resolutionPaths = this.GetDefaultResolutionPaths();422 }423 else424 {425 resolutionPaths = this.GetResolutionPaths(extensionAssembly);426 }427 // Add assembly resolver which can resolve the extensions from the specified directory.428 if (this.assemblyResolver == null)429 {430 this.assemblyResolver = new AssemblyResolver(resolutionPaths);431 }432 else433 {434 this.assemblyResolver.AddSearchDirectories(resolutionPaths);435 }436 }437 private Assembly CurrentDomainAssemblyResolve(object sender, AssemblyResolveEventArgs args)438 {439 var assemblyName = new AssemblyName(args.Name);440 Assembly assembly = null;441 lock (this.resolvedAssemblies)442 {443 try444 {445 EqtTrace.Verbose("CurrentDomain_AssemblyResolve: Resolving assembly '{0}'.", args.Name);446 if (this.resolvedAssemblies.TryGetValue(args.Name, out assembly))447 {448 return assembly;449 }450 // Put it in the resolved assembly so that if below Assembly.Load call451 // triggers another assembly resolution, then we dont end up in stack overflow452 this.resolvedAssemblies[args.Name] = null;453 assembly = Assembly.Load(assemblyName);454 // Replace the value with the loaded assembly455 this.resolvedAssemblies[args.Name] = assembly;456 return assembly;457 }458 finally459 {460 if (assembly == null)461 {462 EqtTrace.Verbose("CurrentDomainAssemblyResolve: Failed to resolve assembly '{0}'.", args.Name);463 }464 }465 }466 }467 /// <summary>468 /// Log the extensions469 /// </summary>470 private void LogExtensions()471 {472 if (EqtTrace.IsVerboseEnabled)473 {474 var discoverers = this.TestExtensions.TestDiscoverers != null ? string.Join(",", this.TestExtensions.TestDiscoverers.Keys.ToArray()) : null;475 EqtTrace.Verbose("TestPluginCache: Discoverers are '{0}'.", discoverers);476 var executors = this.TestExtensions.TestExecutors != null ? string.Join(",", this.TestExtensions.TestExecutors.Keys.ToArray()) : null;...
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using System;3using System.Collections.Generic;4using System.Linq;5using System.Reflection;6using System.Text;7using System.Threading.Tasks;8{9 {10 static void Main(string[] args)11 {12 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;13 TestPluginCache.GetTestExtensions(@"C:\Users\Public\Documents\Visual Studio 2015\Extensions\TestPlatform");14 Console.WriteLine("done");15 Console.ReadKey();16 }17 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)18 {19 Console.WriteLine(args.Name);20 return null;21 }22 }23}24using System;25using System.Collections.Generic;26using System.Linq;27using System.Reflection;28using System.Text;29using System.Threading.Tasks;30{31 {32 static void Main(string[] args)33 {34 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;35 var a = Assembly.LoadFrom(@"C:\Users\Public\Documents\Visual Studio 2015\Extensions\TestPlatform\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll");36 Console.WriteLine("done");37 Console.ReadKey();38 }39 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)40 {41 Console.WriteLine(args.Name);42 return null;43 }44 }45}46using System;47using System.Collections.Generic;48using System.Linq;49using System.Reflection;50using System.Text;51using System.Threading.Tasks;52{53 {54 static void Main(string[] args)55 {56 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;57 var a = Assembly.LoadFrom(@"C:\Users\Public\Documents\Visual Studio 2015\Extensions\TestPlatform\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll");58 Console.WriteLine("done");59 Console.ReadKey();60 }61 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)62 {63 Console.WriteLine(args.Name);64 return null;65 }66 }67}68using System;69using System.Collections.Generic;70using System.Linq;71using System.Reflection;72using System.Text;
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Reflection;3using System.IO;4using System.Collections.Generic;5using System.Linq;6using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;7using Microsoft.VisualStudio.TestPlatform.ObjectModel;8using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;9using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;10using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities;11{12 [FileExtension(".cs")]13 {14 public void Cancel()15 {16 throw new NotImplementedException();17 }18 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle)19 {20 throw new NotImplementedException();21 }22 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)23 {24 throw new NotImplementedException();25 }26 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter)27 {28 throw new NotImplementedException();29 }30 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter)31 {32 throw new NotImplementedException();33 }34 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter, IDictionary<string, object> executorRunSettings)35 {36 throw new NotImplementedException();37 }38 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter, IDictionary<string, object> executorRunSettings)39 {40 throw new NotImplementedException();41 }42 }43}44using System;45using System.Reflection;46using System.IO;47using System.Collections.Generic;48using System.Linq;49using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;50using Microsoft.VisualStudio.TestPlatform.ObjectModel;51using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;52using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;53using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities;54{55 [FileExtension(".cs")]56 {57 public void Cancel()58 {59 throw new NotImplementedException();60 }61 public void RunTests(IEnumerable<TestCase>
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using Microsoft.VisualStudio.TestPlatform.ObjectModel;3using System;4using System.Collections.Generic;5using System.IO;6using System.Reflection;7using System.Text;8{9 {10 static void Main(string[] args)11 {12 string path = @"C:\Users\Public\Documents\Visual Studio 2017\Extensions\";13 string assemblyName = "Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll";14 string assemblyPath = Path.Combine(path, assemblyName);15 if (File.Exists(assemblyPath))16 {17 Assembly assembly = Assembly.LoadFrom(assemblyPath);18 Type type = assembly.GetType("Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Utility.CodeCoverageUtility");19 MethodInfo method = type.GetMethod("GetCodeCoverageUri", BindingFlags.Static | BindingFlags.Public);20 object result = method.Invoke(null, new object[] { "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll", "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll" });21 Console.WriteLine(result);22 }23 {24 Console.WriteLine("File does not exist");25 }26 }27 }28}29using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;30using Microsoft.VisualStudio.TestPlatform.ObjectModel;31using System;32using System.Collections.Generic;33using System.IO;34using System.Reflection;35using System.Text;36{37 {38 static void Main(string[] args)39 {40 string path = @"C:\Users\Public\Documents\Visual Studio 2017\Extensions\";41 string assemblyName = "Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll";42 string assemblyPath = Path.Combine(path, assemblyName);43 if (File.Exists(assemblyPath))44 {45 Assembly assembly = Assembly.LoadFrom(assemblyPath);46 Type type = assembly.GetType("Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Utility.CodeCoverageUtility");47 MethodInfo method = type.GetMethod("GetCodeCoverageUri", BindingFlags.Static | BindingFlags.Public);48 object result = method.Invoke(null, new object[] { "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.Trx
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Linq;3using System.Reflection;4using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;5using Microsoft.VisualStudio.TestPlatform.ObjectModel;6using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;7using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;8using System.Collections.Generic;9{10 [FileExtension(".cs")]11 {12 public void DiscoverTests(IEnumerable<string> sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink)13 {14 foreach (string source in sources)15 {16 }17 }18 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)19 {20 foreach (string source in sources)21 {22 }23 }24 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle)25 {26 foreach (TestCase test in tests)27 {28 }29 }30 public void Cancel()31 {32 }33 }34}35using System;36using System.Linq;37using System.Reflection;38using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;39using Microsoft.VisualStudio.TestPlatform.ObjectModel;40using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;41using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;42using System.Collections.Generic;43{44 [FileExtension(".cs")]45 {46 public void DiscoverTests(IEnumerable<string> sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink)47 {48 foreach (string source in sources)49 {50 }51 }52 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)53 {54 foreach (string source in sources)55 {56 }57 }58 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle)59 {60 foreach (TestCase test in tests)61 {62 }63 }
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Reflection;3using System.IO;4using System.Collections.Generic;5using System.Linq;6using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;7using Microsoft.VisualStudio.TestPlatform.ObjectModel;8using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;9using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;10using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities;11{12 [FileExtension(".cs")]13 {14 public void Cancel()15 {16 throw new NotImplementedException();17 }18 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle)19 {20 throw new NotImplementedException();21 }22 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)23 {24 throw new NotImplementedException();25 }26 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter)27 {28 throw new NotImplementedException();29 }30 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter)31 {32 throw new NotImplementedException();33 }34 public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter, IDictionary<string, object> executorRunSettings)35 {36 throw new NotImplementedException();37 }38 public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle, ITestCaseFilterExpression filter, IDictionary<string, object> executorRunSettings)39 {40 throw new NotImplementedException();41 }42 }43}44using System;45using System.Reflection;46using System.IO;47using System.Collections.Generic;48using System.Linq;49using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;50using Microsoft.VisualStudio.TestPlatform.ObjectModel;51using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;52using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;53using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities;54{55 [FileExtension(".cs")]56 {57 public void Cancel()58 {59 throw new NotImplementedException();60 }61 public void RunTests(IEnumerable<TestCase>
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using Microsoft.VisualStudio.TestPlatform.ObjectModel;3using System;4using System.Collections.Generic;5using System.IO;6using System.Reflection;7using System.Text;8{9 {10 static void Main(string[] args)11 {12 string path = @"C:\Users\Public\Documents\Visual Studio 2017\Extensions\";13 string assemblyName = "Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll";14 string assemblyPath = Path.Combine(path, assemblyName);15 if (File.Exists(assemblyPath))16 {17 Assembly assembly = Assembly.LoadFrom(assemblyPath);18 Type type = assembly.GetType("Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Utility.CodeCoverageUtility");19 MethodInfo method = type.GetMethod("GetCodeCoverageUri", BindingFlags.Static | BindingFlags.Public);20 object result = method.Invoke(null, new object[] { "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll", "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll" });21 Console.WriteLine(result);22 }23 {24 Console.WriteLine("File does not exist");25 }26 }27 }28}29using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;30using Microsoft.VisualStudio.TestPlatform.ObjectModel;31using System;32using System.Collections.Generic;33using System.IO;34using System.Reflection;35using System.Text;36{37 {38 static void Main(string[] args)39 {40 string path = @"C:\Users\Public\Documents\Visual Studio 2017\Extensions\";41 string assemblyName = "Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll";42 string assemblyPath = Path.Combine(path, assemblyName);43 if (File.Exists(assemblyPath))44 {45 Assembly assembly = Assembly.LoadFrom(assemblyPath);46 Type type = assembly.GetType("Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Utility.CodeCoverageUtility");47 MethodInfo method = type.GetMethod("GetCodeCoverageUri", BindingFlags.Static | BindingFlags.Public);48 object result = method.Invoke(null, new object[] { "C:\\Users\\Public\\Documents\\Visual Studio 2017\\Extensions\\Microsoft.VisualStudio.TestPlatform.Extensions.Trx
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Reflection;3using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;4{5 {6 static void Main(string[] args)7 {8 TestPluginCache testPluginCache = new TestPluginCache();9 testPluginCache.CurrentDomainAssemblyResolve += TestPluginCache_CurrentDomainAssemblyResolve;10 Assembly assembly = testPluginCache.GetTestExtensions(TestPluginCache.GetTestExtensionsPath());11 Console.WriteLine(assembly.FullName);12 }13 private static Assembly TestPluginCache_CurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)14 {15 return Assembly.LoadFrom(@"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions\Microsoft.VisualStudio.TraceDataCollector.dll");16 }17 }18}
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using System;3using System.Reflection;4{5 {6 static void Main(string[] args)7 {8 TestPluginCache testPluginCache = new TestPluginCache();9 Assembly assembly = testPluginCache.CurrentDomainAssemblyResolve(null, new ResolveEventArgs("Microsoft.VisualStudio.QualityTools.UnitTestFramework"));10 Console.WriteLine("Assembly location: " + assembly.Location);11 }12 }13}14Assembly location: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Reflection;3using System.IO;4using System.Linq;5using System.Collections.Generic;6using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;7{8 {9 public static void Main(string[] args)10 {11 Assembly currentAssembly = Assembly.GetExecutingAssembly();12 string currentAssemblyPath = currentAssembly.Location;13 string currentAssemblyDirectory = Path.GetDirectoryName(currentAssemblyPath);14 string extensionAssemblyPath = Path.Combine(currentAssemblyDirectory, "MyExtension.dll");15 string extensionAssemblyName = AssemblyName.GetAssemblyName(extensionAssemblyPath).FullName;16 var testPluginCache = TestPluginCache.Instance;17 var extensionAssemblyDictionary = testPluginCache.GetExtensionAssemblyDictionary();18 extensionAssemblyDictionary.Add(extensionAssemblyName, extensionAssemblyPath);19 var extensionTypeDictionary = testPluginCache.GetExtensionTypeDictionary();20 extensionTypeDictionary.Add(extensionAssemblyName, typeof(MyExtension));21 var extensionAssemblyNameToExtensionTypeDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionTypeDictionary();22 extensionAssemblyNameToExtensionTypeDictionary.Add(extensionAssemblyName, typeof(MyExtension));23 var extensionAssemblyNameToExtensionObjectDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionObjectDictionary();24 extensionAssemblyNameToExtensionObjectDictionary.Add(extensionAssemblyName, Activator.CreateInstance(typeof(MyExtension)));25 var extensionAssemblyNameToExtensionAssemblyDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionAssemblyDictionary();26 extensionAssemblyNameToExtensionAssemblyDictionary.Add(extensionAssemblyName, Assembly.LoadFrom(extensionAssemblyPath));
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using System;3using System.Reflection;4{5 {6 static void Main(string[] args)7 {8 TestPluginCache testPluginCache = new TestPluginCache();9 Assembly assembly = testPluginCache.CurrentDomainAssemblyResolve(null, new ResolveEventArgs("Microsoft.VisualStudio.QualityTools.UnitTestFramework"));10 Console.WriteLine("Assembly location: " + assembly.Location);11 }12 }13}14Assembly location: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.Reflection;3using System.IO;4using System.Linq;5using System.Collections.Generic;6using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;7{8 {9 public static void Main(string[] args)10 {11 Assembly currentAssembly = Assembly.GetExecutingAssembly();12 string currentAssemblyPath = currentAssembly.Location;13 string currentAssemblyDirectory = Path.GetDirectoryName(currentAssemblyPath);14 string extensionAssemblyPath = Path.Combine(currentAssemblyDirectory, "MyExtension.dll");15 string extensionAssemblyName = AssemblyName.GetAssemblyName(extensionAssemblyPath).FullName;16 var testPluginCache = TestPluginCache.Instance;17 var extensionAssemblyDictionary = testPluginCache.GetExtensionAssemblyDictionary();18 extensionAssemblyDictionary.Add(extensionAssemblyName, extensionAssemblyPath);19 var extensionTypeDictionary = testPluginCache.GetExtensionTypeDictionary();20 extensionTypeDictionary.Add(extensionAssemblyName, typeof(MyExtension));21 var extensionAssemblyNameToExtensionTypeDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionTypeDictionary();22 extensionAssemblyNameToExtensionTypeDictionary.Add(extensionAssemblyName, typeof(MyExtension));23 var extensionAssemblyNameToExtensionObjectDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionObjectDictionary();24 extensionAssemblyNameToExtensionObjectDictionary.Add(extensionAssemblyName, Activator.CreateInstance(typeof(MyExtension)));25 var extensionAssemblyNameToExtensionAssemblyDictionary = testPluginCache.GetExtensionAssemblyNameToExtensionAssemblyDictionary();26 extensionAssemblyNameToExtensionAssemblyDictionary.Add(extensionAssemblyName, Assembly.LoadFrom(extensionAssemblyPath));
CurrentDomainAssemblyResolve
Using AI Code Generation
1using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;2using Microsoft.VisualStudio.TestPlatform.ObjectModel;3using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;4using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;5using System;6using System.Collections.Generic;7using System.IO;8using System.Linq;9using System.Reflection;10using System.Text;11using System.Threading.Tasks;12{13 {14 public void Initialize(TestLoggerEvents events, string testRunDirectory)15 {16 events.TestRunMessage += Events_TestRunMessage;17 events.TestRunComplete += Events_TestRunComplete;18 }19 private void Events_TestRunComplete(object sender, TestRunCompleteEventArgs e)20 {21 var assembly = typeof(TestPluginCache).Assembly;22 var assemblyPath = Path.GetDirectoryName(assembly.Location) + "\\Microsoft.VisualStudio.TestPlatform.Common.dll";23 var testPluginCache = new TestPluginCache(assemblyPath);24 var assemblyName = new AssemblyName("Microsoft.VisualStudio.TestPlatform.Common");25 var assembly2 = testPluginCache.GetExtensionAssembly(assemblyName);26 Console.WriteLine("Assembly Loaded");27 }28 private void Events_TestRunMessage(object sender, TestRunMessageEventArgs e)29 {30 Console.WriteLine(e.Message);31 }32 }33}34using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;35using Microsoft.VisualStudio.TestPlatform.ObjectModel;36using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;37using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;38using System;39using System.Collections.Generic;40using System.IO;41using System.Linq;42using System.Reflection;43using System.Text;44using System.Threading.Tasks;45{46 {47 public void Initialize(TestLoggerEvents events, string testRunDirectory)48 {49 events.TestRunMessage += Events_TestRunMessage;50 events.TestRunComplete += Events_TestRunComplete;51 }52 private void Events_TestRunComplete(object sender, TestRunCompleteEventArgs e)53 {54 var assembly = typeof(TestPluginCache).Assembly;55 var assemblyPath = Path.GetDirectoryName(assembly.Location) + "\\Microsoft.VisualStudio.TestPlatform.Common.dll";56 AppDomain.CurrentDomain.AssemblyResolve += (s, a) => Assembly.LoadFrom(assemblyPath);
CurrentDomainAssemblyResolve
Using AI Code Generation
1using System;2using System.IO;3using System.Reflection;4using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework;5{6 {7 static void Main(string[] args)8 {9 string extensionAssemblyPath = GetExtensionAssemblyPath();10 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;11 var ext = new ExtensionClass();12 ext.DoSomething();13 AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomainAssemblyResolve;14 Console.WriteLine("Press any key to exit");15 Console.ReadKey();16 }17 private static string GetExtensionAssemblyPath()18 {19 var pluginCache = new TestPluginCache();20 var extensions = pluginCache.GetExtensionAssemblies();21 foreach (var extension in extensions)22 {23 var extAttr = extension.GetCustomAttributes(typeof(ExtensionUriAttribute), false);24 if (extAttr.Length > 0)25 {26 var extUri = (extAttr[0] as ExtensionUriAttribute).ExtensionUri;27 {28 return extension.Location;29 }30 }31 }32 return null;33 }34 private static Assembly CurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)35 {36 var assemblyName = new AssemblyName(args.Name).Name;37 var extensionAssemblyPath = GetExtensionAssemblyPath();38 if (extensionAssemblyPath != null && Path.GetFileNameWithoutExtension(extensionAssemblyPath) == assemblyName)39 {40 return Assembly.LoadFrom(extensionAssemblyPath);41 }42 return null;43 }44 }45}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!