public bool CheckFileExistence(AssemblyName assemblyName, string searchPattern, bool caching, bool checkForBaseDir, bool checkForArchitectPlatfrom = true) { AssemblyName assemblyNameFromStorage; if (TryGetAssemblyNameDefinition(searchPattern, caching, assemblyName.TargetArchitecture, out assemblyNameFromStorage, checkForArchitectPlatfrom)) { var areEquals = /*Telerik Authorship*/ AssemblyNameComparer.AreVersionEquals(assemblyNameFromStorage.Version, assemblyName.Version) && /*Telerik Authorship*/ AssemblyNameComparer.ArePublicKeyEquals(assemblyNameFromStorage.PublicKeyToken, assemblyName.PublicKeyToken) && assemblyName.TargetArchitecture.CanReference(assemblyNameFromStorage.TargetArchitecture) && (!checkForBaseDir || AreDefaultDirEqual(assemblyName, assemblyNameFromStorage)); if (areEquals && caching) { /*Telerik Authorship*/ ModuleDefinition module = AssemblyDefinition.ReadAssembly(searchPattern, readerParameters).MainModule; SpecialTypeAssembly special = module.IsReferenceAssembly() ? SpecialTypeAssembly.Reference : SpecialTypeAssembly.None; AssemblyStrongNameExtended assemblyKey = new AssemblyStrongNameExtended(assemblyName.FullName, assemblyName.TargetArchitecture, special); pathRepository.AssemblyPathName.Add(assemblyKey, searchPattern); if (!pathRepository.AssemblyPathArchitecture.ContainsKey(searchPattern)) { TargetArchitecture architecture = module.GetModuleArchitecture(); pathRepository.AssemblyPathArchitecture.Add(new KeyValuePair <string, TargetArchitecture>(searchPattern, architecture)); } } return(areEquals); } return(false); }
public TargetPlatform GetTargetPlatform(string assemblyFilePath, ModuleDefinition moduleDef) { TargetPlatform targetPlatform = this.DefaultTargetPlatform; if (string.IsNullOrEmpty(assemblyFilePath)) { return(targetPlatform); } if (this.assemblyFrameworkResolverCache.AssemblyPathToTargetPlatform.ContainsKey(assemblyFilePath)) { return(this.assemblyFrameworkResolverCache.AssemblyPathToTargetPlatform[assemblyFilePath]); } else { Task <TargetPlatform> targetPlatformFromDepsJson = null; string moduleLocation = moduleDef.FullyQualifiedName ?? moduleDef.FilePath; string depsJsonLocation = Directory.GetFiles(Path.GetDirectoryName(moduleLocation), "*.deps.json").FirstOrDefault(); if (File.Exists(depsJsonLocation)) { targetPlatformFromDepsJson = Task.Factory.StartNew(() => { return(this.GetPlatformTargetFromDepsJson(moduleLocation)); }); } ///*Telerik Authorship*/ if (moduleDef.Assembly != null) { targetPlatform = this.GetTargetPlatform(moduleDef); if (targetPlatform != this.DefaultTargetPlatform) { this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, targetPlatform); return(targetPlatform); } } AssemblyNameReference msCorlib = moduleDef.AssemblyReferences.FirstOrDefault(a => a.Name == "mscorlib"); if (msCorlib == null) { AssemblyNameReference systemRuntimeReference = moduleDef.AssemblyReferences.FirstOrDefault(x => x.Name == "System.Runtime"); targetPlatform = this.GetTargetPlatform(systemRuntimeReference); if (targetPlatform != this.DefaultTargetPlatform) { this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, targetPlatform); this.assemblyFrameworkResolverCache.AddAssemblySystemRuntimeReference(assemblyFilePath, systemRuntimeReference); return(targetPlatform); } // the next line is only to keep the old functionality msCorlib = moduleDef.Assembly.Name; } if (moduleDef.Assembly != null && moduleDef.Assembly.Name.IsWindowsRuntime || msCorlib.IsFakeMscorlibReference()) { this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, TargetPlatform.WinRT); return(TargetPlatform.WinRT); } /*AssemblyName assemblyName = new AssemblyName(msCorlib.Name, * msCorlib.FullName, * msCorlib.Version, * msCorlib.PublicKeyToken, * Path.GetDirectoryName(assemliyFilePath)) { TargetArchitecture = moduleDef.GetModuleArchitecture() }; * IEnumerable<string> foundPaths = GetAssemblyPaths(assemblyName); * * return GetTargetPlatform(foundPaths.FirstOrDefault());*/ /*Telerik Authorship*/ if (targetPlatformFromDepsJson != null) { targetPlatformFromDepsJson.Wait(); targetPlatform = targetPlatformFromDepsJson.Result; if (targetPlatform != this.DefaultTargetPlatform) { this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, targetPlatform); return(targetPlatform); } } /*Telerik Authorship*/ TargetArchitecture moduleArchitecture = moduleDef.GetModuleArchitecture(); /*Telerik Authorship*/ foreach (KeyValuePair <AssemblyName, TargetPlatform> pair in Mscorlibs) { if (AssemblyNameComparer.AreVersionEquals(pair.Key.Version, msCorlib.Version) && AssemblyNameComparer.ArePublicKeyEquals(pair.Key.PublicKeyToken, msCorlib.PublicKeyToken) && moduleArchitecture.CanReference(pair.Key.TargetArchitecture)) { this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, pair.Value); return(pair.Value); } } /*Telerik Authorship*/ this.assemblyFrameworkResolverCache.AddAssemblyTargetPlatformToCache(assemblyFilePath, this.DefaultTargetPlatform); return(this.DefaultTargetPlatform); } }