private void CopyPinnedAssembly(string assemblyName, PinnedProject project, string hintPath) { var backupEntry = project.Pin.GetBackupForAssembly(assemblyName); var hintPathDir = Path.GetFullPath(Path.GetDirectoryName(hintPath)); if(!backupEntry.ContainsOriginalDirectory(hintPathDir)) { var newBackupEntry = backupEntry.AddEntry(Environment.Directory, hintPathDir); Environment.PinRegistry.Save(); Log.LogMessage("Backing up original copy of assembly '" + assemblyName + "' in '" + hintPath + "' because it is about to be overridden by a pinned copy of that assembly..."); this.ExecTask(() => new CopyAssembly { Assemblies = hintPath.ToTaskItems(), DestinationFolder = newBackupEntry.ToTaskItem(), CopyDependencies = false, SkipUnchangedFiles = SkipUnchangedFiles }); } Log.LogMessage("Copying pinned assembly '" + assemblyName + "' to hint path location '" + hintPath + "'..."); this.ExecTask(() => new CopyAssembly { Assemblies = project.Project.AssemblyPath.ToTaskItems(), DestinationFolder = hintPath.ToTaskItem().FullDirectoryPath().ToTaskItem(), CopyDependencies = false, SkipUnchangedFiles = SkipUnchangedFiles }); }
private bool IsAssemblyInPinnedRepo(string assemblyName, out PinnedProject project) { var registeredAssembly = AssemblyRegistry.GetAssembly(assemblyName); if (registeredAssembly == null) { project = null; return(false); } var pinnedRepos = GetPinnedRepos().ToList(); var matchingProjectsInPinnedRepos = (from pinnedRepo in pinnedRepos from aProject in registeredAssembly.Projects where aProject.AssemblyPath.StartsWith(pinnedRepo.Repo.Path, StringComparison.OrdinalIgnoreCase) select new { Repo = pinnedRepo, Project = aProject }).ToArray(); if (matchingProjectsInPinnedRepos.Length == 0) { project = null; return(false); } var projectRepoPair = matchingProjectsInPinnedRepos .OrderByDescending(p => p.Project.Timestamp) .First(); project = new PinnedProject { Pin = projectRepoPair.Repo.Pin, Project = projectRepoPair.Project }; return(true); }
private bool IsAssemblyInPinnedRepo(string assemblyName, out PinnedProject project) { var registeredAssembly = AssemblyRegistry.GetAssembly(assemblyName); if(registeredAssembly == null) { project = null; return false; } var pinnedRepos = GetPinnedRepos().ToList(); var matchingProjectsInPinnedRepos = (from pinnedRepo in pinnedRepos from aProject in registeredAssembly.Projects where aProject.AssemblyPath.StartsWith(pinnedRepo.Repo.Path, StringComparison.OrdinalIgnoreCase) select new { Repo = pinnedRepo, Project = aProject}).ToArray(); if(matchingProjectsInPinnedRepos.Length == 0) { project = null; return false; } var projectRepoPair = matchingProjectsInPinnedRepos .OrderByDescending(p => p.Project.Timestamp) .First(); project = new PinnedProject { Pin = projectRepoPair.Repo.Pin, Project = projectRepoPair.Project }; return true; }