GetExtensionPath() public method

public GetExtensionPath ( string pathName ) : ExtensionPath
pathName string
return ExtensionPath
Exemplo n.º 1
0
        static void SetupAddIn(XmlReader reader, AddIn addIn, string hintPath)
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement())
                {
                    switch (reader.LocalName)
                    {
                    case "StringResources":
                    case "BitmapResources":
                        if (reader.AttributeCount != 1)
                        {
                            throw new AddInLoadException("BitmapResources requires ONE attribute.");
                        }

                        string filename = StringParser.Parse(reader.GetAttribute("file"));

                        if (reader.LocalName == "BitmapResources")
                        {
                            addIn.BitmapResources.Add(filename);
                        }
                        else
                        {
                            addIn.StringResources.Add(filename);
                        }
                        break;

                    case "Runtime":
                        if (!reader.IsEmptyElement)
                        {
                            Runtime.ReadSection(reader, addIn, hintPath);
                        }
                        break;

                    case "Include":
                        if (reader.AttributeCount != 1)
                        {
                            throw new AddInLoadException("Include requires ONE attribute.");
                        }
                        if (!reader.IsEmptyElement)
                        {
                            throw new AddInLoadException("Include nodes must be empty!");
                        }
                        if (hintPath == null)
                        {
                            throw new AddInLoadException("Cannot use include nodes when hintPath was not specified (e.g. when AddInManager reads a .addin file)!");
                        }
                        string            fileName = Path.Combine(hintPath, reader.GetAttribute(0));
                        XmlReaderSettings xrs      = new XmlReaderSettings();
                        xrs.ConformanceLevel = ConformanceLevel.Fragment;
                        using (XmlReader includeReader = XmlTextReader.Create(fileName, xrs)) {
                            SetupAddIn(includeReader, addIn, Path.GetDirectoryName(fileName));
                        }
                        break;

                    case "Path":
                        if (reader.AttributeCount != 1)
                        {
                            throw new AddInLoadException("Import node requires ONE attribute.");
                        }
                        string        pathName      = reader.GetAttribute(0);
                        ExtensionPath extensionPath = addIn.GetExtensionPath(pathName);
                        if (!reader.IsEmptyElement)
                        {
                            ExtensionPath.SetUp(extensionPath, reader, "Path");
                        }
                        break;

                    case "Manifest":
                        addIn.Manifest.ReadManifestSection(reader, hintPath);
                        break;

                    default:
                        throw new AddInLoadException("Unknown root path node:" + reader.LocalName);
                    }
                }
            }
        }
Exemplo n.º 2
0
		static void SetupAddIn(XmlReader reader, AddIn addIn, string hintPath)
		{
			while (reader.Read()) {
				if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement()) {
					switch (reader.LocalName) {
						case "StringResources":
						case "BitmapResources":
							if (reader.AttributeCount != 1) {
								throw new AddInLoadException("BitmapResources requires ONE attribute.");
							}
							
							string filename = StringParser.Parse(reader.GetAttribute("file"));
							
							if(reader.LocalName == "BitmapResources")
							{
								addIn.BitmapResources.Add(filename);
							}
							else
							{
								addIn.StringResources.Add(filename);
							}
							break;
						case "Runtime":
							if (!reader.IsEmptyElement) {
								Runtime.ReadSection(reader, addIn, hintPath);
							}
							break;
						case "Include":
							if (reader.AttributeCount != 1) {
								throw new AddInLoadException("Include requires ONE attribute.");
							}
							if (!reader.IsEmptyElement) {
								throw new AddInLoadException("Include nodes must be empty!");
							}
							if (hintPath == null) {
								throw new AddInLoadException("Cannot use include nodes when hintPath was not specified (e.g. when AddInManager reads a .addin file)!");
							}
							string fileName = Path.Combine(hintPath, reader.GetAttribute(0));
							XmlReaderSettings xrs = new XmlReaderSettings();
							xrs.ConformanceLevel = ConformanceLevel.Fragment;
							using (XmlReader includeReader = XmlTextReader.Create(fileName, xrs)) {
								SetupAddIn(includeReader, addIn, Path.GetDirectoryName(fileName));
							}
							break;
						case "Path":
							if (reader.AttributeCount != 1) {
								throw new AddInLoadException("Import node requires ONE attribute.");
							}
							string pathName = reader.GetAttribute(0);
							ExtensionPath extensionPath = addIn.GetExtensionPath(pathName);
							if (!reader.IsEmptyElement) {
								ExtensionPath.SetUp(extensionPath, reader, "Path");
							}
							break;
						case "Manifest":
							addIn.Manifest.ReadManifestSection(reader, hintPath);
							break;
						default:
							throw new AddInLoadException("Unknown root path node:" + reader.LocalName);
					}
				}
			}
		}
Exemplo n.º 3
0
        private static void SetupAddIn(XmlReader reader, AddIn addIn, string hintPath)
        {
            while (reader.Read())
            {
                if ((reader.NodeType != XmlNodeType.Element) || !reader.IsStartElement())
                {
                    continue;
                }
                switch (reader.LocalName)
                {
                case "StringResources":
                case "BitmapResources":
                    if (reader.AttributeCount != 1)
                    {
                        throw new NotSupportedException("BitmapResources requires ONE attribute.");
                    }
                    break;

                case "Runtime":
                {
                    if (!reader.IsEmptyElement)
                    {
                        Runtime.ReadSection(reader, addIn, hintPath);
                    }
                    continue;
                }

                case "Include":
                    if (reader.AttributeCount != 1)
                    {
                        throw new NotSupportedException("Include requires ONE attribute.");
                    }
                    goto Label_0146;

                case "Path":
                    goto Label_01A3;

                case "Manifest":
                {
                    addIn.Manifest.ReadManifestSection(reader, hintPath);
                    continue;
                }

                default:
                    throw new NotSupportedException("Unknown root path node:" + reader.LocalName);
                }
                string item = StringParser.Parse(reader.GetAttribute("file"));
                if (reader.LocalName == "BitmapResources")
                {
                    addIn.BitmapResources.Add(item);
                }
                else
                {
                    addIn.StringResources.Add(item);
                }
                continue;
Label_0146:
                if (!reader.IsEmptyElement)
                {
                    throw new NotSupportedException("Include nodes must be empty!");
                }
                if (hintPath == null)
                {
                    throw new NotSupportedException("Cannot use include nodes when hintPath was not specified (e.g. when AddInManager reads a .addin file)!");
                }
                string            inputUri = Path.Combine(hintPath, reader.GetAttribute(0));
                XmlReaderSettings settings = new XmlReaderSettings
                {
                    ConformanceLevel = ConformanceLevel.Fragment
                };
                using (XmlReader reader2 = XmlReader.Create(inputUri, settings))
                {
                    SetupAddIn(reader2, addIn, Path.GetDirectoryName(inputUri));
                    continue;
                }
Label_01A3:
                if (reader.AttributeCount != 1)
                {
                    throw new NotSupportedException("Import node requires ONE attribute.");
                }
                string        attribute     = reader.GetAttribute(0);
                ExtensionPath extensionPath = addIn.GetExtensionPath(attribute);
                if (!reader.IsEmptyElement)
                {
                    ExtensionPath.SetUp(extensionPath, reader, "Path");
                }
            }
        }