/// <summary> /// Updates physical directory attribute value to the absolute path of the related project. /// </summary> private static void UpdatePhysicalDirectory(XmlNode node, bool updateBinaryReferences) { string physicalDirectory = node.Attributes["physicalDirectory"].Value; string relatedProjectName = Path.GetFileName(physicalDirectory); string relatedProjectFile = relatedProjectName + ".csproj"; string relatedProjectVersion = ReferenceFolder.GetLatestVersion( Arguments.InternalReferencesPath, relatedProjectName); string projectPath = Path.Combine(Arguments.WorkingDirectoryRelated, relatedProjectName, relatedProjectFile); physicalDirectory = Path.Combine(Arguments.WorkingDirectoryRelated, relatedProjectName); node.Attributes["physicalDirectory"].Value = physicalDirectory; if (updateBinaryReferences) { UpdateBinaryReferences(projectPath, false); Console.WriteLine( Resources.LogReferencesTo, relatedProjectFile, relatedProjectName, relatedProjectVersion); } }
public void SetUpFixture() { WixBindingTestsHelper.RegisterResourceStringsWithSharpDevelopResourceManager(); wixProject = WixBindingTestsHelper.CreateEmptyWixProject(); parentNode = new TreeNode(); WixProjectNodeBuilder builder = new WixProjectNodeBuilder(); wixProjectNode = builder.AddProjectNode(parentNode, wixProject) as ProjectNode; foreach (TreeNode node in wixProjectNode.Nodes) { if (node is WixLibraryFolderNode) { wixLibraryFolderNode = node as WixLibraryFolderNode; } else if (node is WixExtensionFolderNode) { wixExtensionFolderNode = node as WixExtensionFolderNode; } } foreach (TreeNode node in wixProjectNode.Nodes) { referenceFolderNode = node as ReferenceFolder; if (referenceFolderNode != null) { break; } } }
/// <summary> /// Updates binary references for specified project. /// </summary> private static void UpdateBinaryReferences( string projectPath, bool reportReferences) { string text = File.ReadAllText(projectPath); XmlDocument doc = new XmlDocument(); doc.LoadXml(text); XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable); xnm.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003"); foreach (XmlNode node in doc.SelectNodes("/ms:Project/ms:ItemGroup/ms:Reference/ms:HintPath", xnm)) { node.ParentNode.RemoveChild(node); } List <ReferenceFile> allExternals = ReferenceFolder.GetAllFiles(Arguments.ExternalReferencesPath); List <ReferenceFile> allInternals = ReferenceFolder.GetAllFiles(Arguments.InternalReferencesPath); UpdateHints(doc, xnm, allExternals, reportReferences); UpdateHints(doc, xnm, allInternals, reportReferences); using (XmlTextWriter xtw = new XmlTextWriter(projectPath, Encoding.UTF8)) { xtw.Formatting = Formatting.Indented; doc.WriteTo(xtw); } }
public void SetUpFixture() { ResourceManager rm = new ResourceManager("WixBinding.Tests.Strings", GetType().Assembly); ResourceService.RegisterNeutralStrings(rm); wixProject = WixBindingTestsHelper.CreateEmptyWixProject(); parentNode = new TreeNode(); WixProjectNodeBuilder builder = new WixProjectNodeBuilder(); wixProjectNode = builder.AddProjectNode(parentNode, wixProject) as ProjectNode; foreach (TreeNode node in wixProjectNode.Nodes) { if (node is WixLibraryFolderNode) { wixLibraryFolderNode = node as WixLibraryFolderNode; } else if (node is WixExtensionFolderNode) { wixExtensionFolderNode = node as WixExtensionFolderNode; } } foreach (TreeNode node in wixProjectNode.Nodes) { referenceFolderNode = node as ReferenceFolder; if (referenceFolderNode != null) { break; } } }
public TreeNode AddProjectNode(TreeNode motherNode, IProject project) { ProjectNode projectNode = new ProjectNode(project); projectNode.AddTo(motherNode); ReferenceFolder referenceFolderNode = new ReferenceFolder(project); referenceFolderNode.AddTo(projectNode); //TagManagerNode tagManagerNode = new TagManagerNode(project); //tagManagerNode.AddTo(projectNode); // // TagListFileNode tagListFileNode = new TagListFileNode(TagManager.FullFileName, FileNodeStatus.InProject); // tagListFileNode.AddTo(projectNode); // TagGroupNode tagGroupNode = new TagGroupNode(project); // tagGroupNode.AddTo(projectNode); // AimTagGroupFolderNode aimTagGroupFolderNode = new AimTagGroupFolderNode(project); // aimTagGroupFolderNode.AddTo(projectNode); // // SecurityNode securityNode = new SecurityNode(project); // securityNode.AddTo(projectNode); //DriverFolderNode driverFolderNode = new DriverFolderNode(project); //driverFolderNode.AddTo(projectNode); motherNode.TreeView.MouseDoubleClick += new MouseEventHandler(TreeView_MouseDoubleClick); return(projectNode); }
/// <summary> /// Adds a WixProjectNode to the tree. This node will have a /// References node, a Wix Extensions node and a Wix Libraries node. /// </summary> public TreeNode AddProjectNode(TreeNode motherNode, IProject project) { ProjectNode projectNode = new ProjectNode(project); projectNode.AddTo(motherNode); ReferenceFolder referenceFolderNode = new ReferenceFolder(project); referenceFolderNode.AddTo(projectNode); WixExtensionFolderNode extensionNode = new WixExtensionFolderNode(project); extensionNode.AddTo(projectNode); WixLibraryFolderNode libraryNode = new WixLibraryFolderNode(project); libraryNode.AddTo(projectNode); return(projectNode); }
/// <summary> /// Updates project references. /// </summary> private static void UpdateProjectReferences() { string text = File.ReadAllText(Paths.ProjectFile); XmlDocument doc = new XmlDocument(); doc.LoadXml(text); XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable); xnm.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003"); foreach (XmlNode node in doc.SelectNodes("/ms:Project/ms:ItemGroup/ms:ProjectReference", xnm)) { string include = node.Attributes["Include"].Value; string relatedProjectFile = Path.GetFileName(include); string relatedProjectName = Path.GetFileNameWithoutExtension(include); string relatedProjectVersion = ReferenceFolder.GetLatestVersion( Arguments.InternalReferencesPath, relatedProjectName); include = Path.Combine(Arguments.WorkingDirectoryRelated, relatedProjectName, relatedProjectFile); node.Attributes["Include"].Value = include; UpdateBinaryReferences(include, false); Console.WriteLine( Resources.LogReferencesTo, relatedProjectFile, relatedProjectName, relatedProjectVersion); } using (XmlTextWriter xtw = new XmlTextWriter(Paths.ProjectFile, Encoding.UTF8)) { xtw.Formatting = Formatting.Indented; doc.WriteTo(xtw); } }
void ResolveFiles(ReferenceFolder folder) { FileList found = new FileList(); found.FileFound += new EventHandler <FileList.FileFoundEventArgs>(FileFound); found.RecurseFolders = folder.Recursive; found.Add(folder.AbsolutePath(_namedValues)); ReferenceWorkItem item; foreach (FileInfo file in found) { string filenameonly = Path.GetFileNameWithoutExtension(file.Name); if (!_assemblyNameToFile.TryGetValue(filenameonly, out item)) { _assemblyNameToFile.Add(filenameonly, item = new ReferenceWorkItem()); } item.FullPath = file.FullName; item.FoundIn = folder; } }
/// <summary> /// Gets the list of obsolete subfolders. /// Returns false if project path is unknown. /// </summary> public bool GetObsoleteSubfolders(string projectPath, out List <string> obsoleteSubfolders) { string projectFolder = Path.GetFileName(projectPath); string latestVersion = ReferenceFolder.GetLatestVersion( Arguments.InternalReferencesPath, projectFolder); string latestFolderName = Path.GetFileName( ReferenceFolder.GetLatestPath( Arguments.InternalReferencesPath, projectFolder)); obsoleteSubfolders = ObsoleteHelper.GetObsoletePaths( Directory.GetDirectories(projectPath), new List <string> { latestVersion, latestFolderName }, Arguments.DaysToLive); return(true); }
void ResolveFiles(ReferenceFolder folder) { FileList found = new FileList(); found.FileFound += new EventHandler<FileList.FileFoundEventArgs>(FileFound); found.RecurseFolders = folder.Recursive; found.Add(folder.AbsolutePath(_namedValues)); ReferenceWorkItem item; foreach (FileInfo file in found) { string filenameonly = Path.GetFileNameWithoutExtension(file.Name); if(!_assemblyNameToFile.TryGetValue(filenameonly, out item)) _assemblyNameToFile.Add(filenameonly, item = new ReferenceWorkItem()); item.FullPath = file.FullName; item.FoundIn = folder; } }
/// <summary> /// Checks "WrongReferences" condition. /// </summary> public static void CheckWrongReferences() { StringBuilder message = new StringBuilder(); List <string> projects = ProjectHelper.GetProjectReferences(); if (Arguments.ProjectType != ProjectType.Azure) { foreach (string project in projects) { message.AppendLine( Strings.DontUseProjectReference .Display(project)); } } List <Reference> references = ProjectHelper.GetBinaryReferences(); CheckReferenceProperties(references, message); List <ReferenceFile> allExternals = ReferenceFolder.GetAllFiles(Arguments.ExternalReferencesPath); List <ReferenceFile> allInternals = ReferenceFolder.GetAllFiles(Arguments.InternalReferencesPath); List <ReferenceFile> usedExternals = new List <ReferenceFile>(); List <ReferenceFile> usedInternals = new List <ReferenceFile>(); List <Reference> usedGac = new List <Reference>(); foreach (Reference reference in references) { ReferenceFile usedExternal = allExternals.Where(file => file.AssemblyName == reference.Name).FirstOrDefault(); ReferenceFile usedInternal = allInternals.Where(file => file.AssemblyName == reference.Name).FirstOrDefault(); if (usedExternal != null) { usedExternals.Add(usedExternal); } else if (usedInternal != null) { usedInternals.Add(usedInternal); } else { usedGac.Add(reference); } } foreach (string project in projects) { ReferenceFile usedInternal = allInternals .Where(file => file.AssemblyName == Path.GetFileNameWithoutExtension(project)) .FirstOrDefault(); if (usedInternal != null) { usedInternals.Add(usedInternal); } } ReferenceMark.SetupActual( ReferenceType.External, Arguments.ReferencesDirectory, usedExternals.Select(item => item.ProjectName).Distinct()); ReferenceMark.SetupActual( ReferenceType.Internal, Arguments.ReferencesDirectory, usedInternals.Select(item => item.ProjectName).Distinct()); List <string> requiredGac = new List <string>(); List <string> allowedGac = new List <string>(); allowedGac.Add("envdte"); allowedGac.Add("envdte80"); allowedGac.Add("Microsoft.Contracts"); allowedGac.Add("Microsoft.CSharp"); allowedGac.Add("Microsoft.JScript"); allowedGac.Add("Microsoft.mshtml"); allowedGac.Add("Microsoft.ReportViewer.Common"); allowedGac.Add("Microsoft.ReportViewer.WebForms"); allowedGac.Add("Microsoft.Synchronization"); allowedGac.Add("Microsoft.Synchronization.Data"); allowedGac.Add("Microsoft.Synchronization.Data.SqlServer"); allowedGac.Add("Microsoft.VisualBasic.Compatibility.Data"); allowedGac.Add("Microsoft.VisualStudio.QualityTools.UnitTestFramework"); allowedGac.Add("PresentationCore"); allowedGac.Add("PresentationFramework"); allowedGac.Add("System"); allowedGac.Add("System.Core"); allowedGac.Add("System.ComponentModel.DataAnnotations"); allowedGac.Add("System.Configuration"); allowedGac.Add("System.configuration"); allowedGac.Add("System.Configuration.Install"); allowedGac.Add("System.Data"); allowedGac.Add("System.Data.DataSetExtensions"); allowedGac.Add("System.Data.Entity"); allowedGac.Add("System.Data.Linq"); allowedGac.Add("System.Data.Services"); allowedGac.Add("System.Data.Services.Client"); allowedGac.Add("System.Deployment"); allowedGac.Add("System.Design"); allowedGac.Add("System.Drawing"); allowedGac.Add("System.EnterpriseServices"); allowedGac.Add("System.IdentityModel"); allowedGac.Add("System.IdentityModel.Selectors"); allowedGac.Add("System.Management"); allowedGac.Add("System.Messaging"); allowedGac.Add("System.Runtime.Remoting"); allowedGac.Add("System.Runtime.Serialization"); allowedGac.Add("System.Runtime.Serialization.Formatters.Soap"); allowedGac.Add("System.Security"); allowedGac.Add("System.ServiceModel"); allowedGac.Add("System.ServiceModel.Web"); allowedGac.Add("System.ServiceModel.DomainServices.EntityFramework"); allowedGac.Add("System.ServiceModel.DomainServices.Hosting"); allowedGac.Add("System.ServiceModel.DomainServices.Server"); allowedGac.Add("System.ServiceProcess"); allowedGac.Add("System.Transactions"); allowedGac.Add("System.Web"); allowedGac.Add("System.Web.Abstractions"); allowedGac.Add("System.Web.ApplicationServices"); allowedGac.Add("System.Web.DynamicData"); allowedGac.Add("System.Web.Entity"); allowedGac.Add("System.Web.Extensions"); allowedGac.Add("System.Web.Extensions.Design"); allowedGac.Add("System.Web.Helpers"); allowedGac.Add("System.Web.Mobile"); allowedGac.Add("System.Web.Routing"); allowedGac.Add("System.Web.Services"); allowedGac.Add("System.Web.WebPages"); allowedGac.Add("System.Windows.Forms"); allowedGac.Add("System.Xaml"); allowedGac.Add("System.XML"); allowedGac.Add("System.Xml"); allowedGac.Add("System.Xml.Linq"); allowedGac.Add("WindowsBase"); string description; if (!ValidationHelper.CheckEntries( usedGac.Select(reference => reference.Name).ToList(), requiredGac, allowedGac, out description)) { message.Append(description); } if (message.Length == 0) { return; } RaiseError.WrongReferences(message.ToString()); }