Exemplo n.º 1
0
        public static string GetPrivateBinPath(string basePath, IList assemblies)
        {
            StringBuilder sb      = new StringBuilder(200);
            ArrayList     dirList = new ArrayList();

            foreach (string assembly in assemblies)
            {
                string dir = PathUtils.RelativePath(basePath, Path.GetDirectoryName(assembly));
                if (dir != null && dir != "." && !dirList.Contains(dir))
                {
                    dirList.Add(dir);
                    if (sb.Length > 0)
                    {
                        sb.Append(Path.PathSeparator);
                    }
                    sb.Append(dir);
                }
            }

            return(sb.Length == 0 ? null : sb.ToString());
        }
Exemplo n.º 2
0
        public void Save()
        {
            projectPath = ProjectPathFromFile(projectPath);

            XmlTextWriter writer = new XmlTextWriter(projectPath, System.Text.Encoding.UTF8);

            writer.Formatting = Formatting.Indented;

            writer.WriteStartElement("NUnitProject");

            if (configs.Count > 0 || this.BasePath != this.DefaultBasePath)
            {
                writer.WriteStartElement("Settings");
                if (configs.Count > 0)
                {
                    writer.WriteAttributeString("activeconfig", ActiveConfigName);
                }
                if (this.BasePath != this.DefaultBasePath)
                {
                    writer.WriteAttributeString("appbase", this.BasePath);
                }
                writer.WriteEndElement();
            }

            foreach (ProjectConfig config in Configs)
            {
                writer.WriteStartElement("Config");
                writer.WriteAttributeString("name", config.Name);
                string appbase = config.BasePath;
                if (!PathUtils.SamePathOrUnder(this.BasePath, appbase))
                {
                    writer.WriteAttributeString("appbase", appbase);
                }
                else if (config.RelativeBasePath != null)
                {
                    writer.WriteAttributeString("appbase", config.RelativeBasePath);
                }

                string configFile = config.ConfigurationFile;
                if (configFile != null && configFile != this.ConfigurationFile)
                {
                    writer.WriteAttributeString("configfile", config.ConfigurationFile);
                }

                if (config.BinPathType == BinPathType.Manual)
                {
                    writer.WriteAttributeString("binpath", config.PrivateBinPath);
                }
                else
                {
                    writer.WriteAttributeString("binpathtype", config.BinPathType.ToString());
                }

                foreach (string assembly in config.Assemblies)
                {
                    writer.WriteStartElement("assembly");
                    writer.WriteAttributeString("path", PathUtils.RelativePath(config.BasePath, assembly));
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
            }

            writer.WriteEndElement();

            writer.Close();
            this.IsDirty = false;

            // Once we save a project, it's no longer
            // loaded as an assembly wrapper on reload.
            this.isAssemblyWrapper = false;
        }