[ResourceConsumption(ResourceScope.Machine)] //For Create method call. But the path is not created in this method.
 public static MetadataArtifactLoader Create(string path,
                                             ExtensionCheck extensionCheck,
                                             string validExtension,
                                             ICollection <string> uriRegistry)
 {
     return(Create(path, extensionCheck, validExtension, uriRegistry, new DefaultAssemblyResolver()));
 }
 [ResourceConsumption(ResourceScope.Machine)] //For Create method call. But the path is not created in this method.
 public static MetadataArtifactLoader Create(string path,
                                             ExtensionCheck extensionCheck,
                                             string validExtension,
                                             ICollection<string> uriRegistry)
 {
     return Create(path, extensionCheck, validExtension, uriRegistry, new DefaultAssemblyResolver());
 }
Example #3
0
        internal static MetadataArtifactLoader CreateResourceLoader(
            string path, ExtensionCheck extensionCheck, string validExtension, ICollection <string> uriRegistry,
            MetadataArtifactAssemblyResolver resolver)
        {
            DebugCheck.NotNull(path);
            Debug.Assert(PathStartsWithResPrefix(path));

            // if the supplied path ends with a separator, or contains only one
            // segment (i.e., the name of an assembly, or the wildcard character),
            // create a composite loader that can extract resources from one or
            // more assemblies
            //
            var    createCompositeResLoader = false;
            string assemblyName             = null;
            string resourceName             = null;

            ParseResourcePath(path, out assemblyName, out resourceName);
            createCompositeResLoader = (assemblyName != null) && (resourceName == null || assemblyName.Trim() == wildcard);

            ValidateExtension(extensionCheck, validExtension, resourceName);

            if (createCompositeResLoader)
            {
                return(new MetadataArtifactLoaderCompositeResource(path, assemblyName, resourceName, uriRegistry, resolver));
            }

            Debug.Assert(!string.IsNullOrEmpty(resourceName), "we should not get here is the resourceName is null");
            var assembly = ResolveAssemblyName(assemblyName, resolver);

            return(new MetadataArtifactLoaderResource(assembly, resourceName, uriRegistry));
        }
Example #4
0
        [ResourceConsumption(ResourceScope.Machine)] //For CheckArtifactExtension method call. But the path is not created in this method.
        internal static MetadataArtifactLoader Create(
            string path,
            ExtensionCheck extensionCheck,
            string validExtension,
            ICollection <string> uriRegistry,
            MetadataArtifactAssemblyResolver resolver)
        {
            DebugCheck.NotNull(path);
            DebugCheck.NotNull(resolver);

            // res:// -based artifacts
            //
            if (PathStartsWithResPrefix(path))
            {
                return(MetadataArtifactLoaderCompositeResource.CreateResourceLoader(
                           path, extensionCheck, validExtension, uriRegistry, resolver));
            }

            // Files and Folders
            //
            var normalizedPath = NormalizeFilePaths(path);

            if (Directory.Exists(normalizedPath))
            {
                return(new MetadataArtifactLoaderCompositeFile(normalizedPath, uriRegistry));
            }
            else if (File.Exists(normalizedPath))
            {
                switch (extensionCheck)
                {
                case ExtensionCheck.Specific:
                    CheckArtifactExtension(normalizedPath, validExtension);
                    break;

                case ExtensionCheck.All:
                    if (!IsValidArtifact(normalizedPath))
                    {
                        throw new MetadataException(Strings.InvalidMetadataPath);
                    }
                    break;
                }

                return(new MetadataArtifactLoaderFile(normalizedPath, uriRegistry));
            }

            throw new MetadataException(Strings.InvalidMetadataPath);
        }
        [ResourceConsumption(ResourceScope.Machine)] //For CheckArtifactExtension method call. But the path is not created in this method.
        internal static MetadataArtifactLoader Create(
            string path,
            ExtensionCheck extensionCheck,
            string validExtension,
            ICollection<string> uriRegistry,
            MetadataArtifactAssemblyResolver resolver)
        {
            DebugCheck.NotNull(path);
            DebugCheck.NotNull(resolver);

            // res:// -based artifacts
            //
            if (PathStartsWithResPrefix(path))
            {
                return MetadataArtifactLoaderCompositeResource.CreateResourceLoader(
                    path, extensionCheck, validExtension, uriRegistry, resolver);
            }

            // Files and Folders
            //
            var normalizedPath = NormalizeFilePaths(path);
            if (Directory.Exists(normalizedPath))
            {
                return new MetadataArtifactLoaderCompositeFile(normalizedPath, uriRegistry);
            }
            else if (File.Exists(normalizedPath))
            {
                switch (extensionCheck)
                {
                    case ExtensionCheck.Specific:
                        CheckArtifactExtension(normalizedPath, validExtension);
                        break;

                    case ExtensionCheck.All:
                        if (!IsValidArtifact(normalizedPath))
                        {
                            throw new MetadataException(Strings.InvalidMetadataPath);
                        }
                        break;
                }

                return new MetadataArtifactLoaderFile(normalizedPath, uriRegistry);
            }

            throw new MetadataException(Strings.InvalidMetadataPath);
        }
Example #6
0
        private static void ValidateExtension(ExtensionCheck extensionCheck, string validExtension, string resourceName)
        {
            if (resourceName == null)
            {
                return;
            }

            // the supplied path represents a single resource
            //
            switch (extensionCheck)
            {
            case ExtensionCheck.Specific:
                CheckArtifactExtension(resourceName, validExtension);
                break;

            case ExtensionCheck.All:
                if (!IsValidArtifact(resourceName))
                {
                    throw new MetadataException(Strings.InvalidMetadataPath);
                }
                break;
            }
        }
        private static void ValidateExtension(ExtensionCheck extensionCheck, string validExtension, string resourceName)
        {
            if (resourceName == null)
            {
                return;
            }

            // the supplied path represents a single resource
            //
            switch (extensionCheck)
            {
                case ExtensionCheck.Specific:
                    CheckArtifactExtension(resourceName, validExtension);
                    break;

                case ExtensionCheck.All:
                    if (!IsValidArtifact(resourceName))
                    {
                        throw new MetadataException(Strings.InvalidMetadataPath);
                    }
                    break;
            }
        }
        internal static MetadataArtifactLoader CreateResourceLoader(
            string path, ExtensionCheck extensionCheck, string validExtension, ICollection<string> uriRegistry,
            MetadataArtifactAssemblyResolver resolver)
        {
            Debug.Assert(path != null);
            Debug.Assert(PathStartsWithResPrefix(path));

            // if the supplied path ends with a separator, or contains only one
            // segment (i.e., the name of an assembly, or the wildcard character),
            // create a composite loader that can extract resources from one or 
            // more assemblies
            //
            var createCompositeResLoader = false;
            string assemblyName = null;
            string resourceName = null;
            ParseResourcePath(path, out assemblyName, out resourceName);
            createCompositeResLoader = (assemblyName != null) && (resourceName == null || assemblyName.Trim() == wildcard);

            ValidateExtension(extensionCheck, validExtension, resourceName);

            if (createCompositeResLoader)
            {
                return new MetadataArtifactLoaderCompositeResource(path, assemblyName, resourceName, uriRegistry, resolver);
            }

            Debug.Assert(!string.IsNullOrEmpty(resourceName), "we should not get here is the resourceName is null");
            var assembly = ResolveAssemblyName(assemblyName, resolver);
            return new MetadataArtifactLoaderResource(assembly, resourceName, uriRegistry);
        }