Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 3
0
        /// <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;
                }
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        /// <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;
            }
        }
Esempio n. 9
0
        /// <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;
			}
		}
Esempio n. 11
0
        /// <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());
        }