private void ProcessDirectoryRecursive(VirtualDirectory vdir, bool topLevel)
 {
     if (this._dirType == CodeDirectoryType.WebReferences)
     {
         BuildProvider o = new WebReferencesBuildProvider(vdir);
         o.SetVirtualPath(vdir.VirtualPathObject);
         this._buildProviders.Add(o);
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.WebReferences);
     }
     else if (this._dirType == CodeDirectoryType.AppResources)
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.GlobalResources);
     }
     else if (this._dirType == CodeDirectoryType.LocalResources)
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.LocalResources);
     }
     else if ((this._dirType == CodeDirectoryType.MainCode) || (this._dirType == CodeDirectoryType.SubCode))
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.Code);
     }
     foreach (VirtualFileBase base2 in vdir.Children)
     {
         if (base2.IsDirectory)
         {
             if (((!topLevel || (this._excludedSubdirectories == null)) || !this._excludedSubdirectories.Contains(base2.Name)) && !(base2.Name == "_vti_cnf"))
             {
                 this.ProcessDirectoryRecursive(base2 as VirtualDirectory, false);
             }
         }
         else if ((this._dirType != CodeDirectoryType.WebReferences) && ((!IsResourceCodeDirectoryType(this._dirType) || !this._onlyBuildLocalizedResources) || (Util.GetCultureName(base2.VirtualPath) != null)))
         {
             BuildProvider provider2 = BuildManager.CreateBuildProvider(base2.VirtualPathObject, IsResourceCodeDirectoryType(this._dirType) ? BuildProviderAppliesTo.Resources : BuildProviderAppliesTo.Code, this._bpc.CompConfig, this._bpc.ReferencedAssemblies, false);
             if (provider2 != null)
             {
                 if ((this._dirType == CodeDirectoryType.LocalResources) && (provider2 is BaseResourcesBuildProvider))
                 {
                     ((BaseResourcesBuildProvider)provider2).DontGenerateStronglyTypedClass();
                 }
                 this._buildProviders.Add(provider2);
             }
         }
     }
 }
Esempio n. 2
0
        private void ProcessDirectoryRecursive(VirtualDirectory vdir, bool topLevel)
        {
            // If it's a WebReferences directory, handle it using a single WebReferencesBuildProvider
            // instead of creating a different BuildProvider for each file.
            if (_dirType == CodeDirectoryType.WebReferences)
            {
                // Create a build provider for the current directory
                BuildProvider buildProvider = new WebReferencesBuildProvider(vdir);
                buildProvider.SetVirtualPath(vdir.VirtualPathObject);
                _buildProviders.Add(buildProvider);

                AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.WebReferences);
            }
            else if (_dirType == CodeDirectoryType.AppResources)
            {
                AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.GlobalResources);
            }
            else if (_dirType == CodeDirectoryType.LocalResources)
            {
                AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.LocalResources);
            }
            else if (_dirType == CodeDirectoryType.MainCode || _dirType == CodeDirectoryType.SubCode)
            {
                AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.Code);
            }

            // Go through all the files in the directory
            foreach (VirtualFileBase child in vdir.Children)
            {
                if (child.IsDirectory)
                {
                    // If we are at the top level of this code directory, and the current
                    // subdirectory is in the exclude list, skip it
                    if (topLevel && _excludedSubdirectories != null &&
                        _excludedSubdirectories.Contains(child.Name))
                    {
                        continue;
                    }

                    // Exclude the special FrontPage directory (VSWhidbey 116727)
                    if (child.Name == "_vti_cnf")
                    {
                        continue;
                    }

                    ProcessDirectoryRecursive(child as VirtualDirectory, false /*topLevel*/);
                    continue;
                }

                // Don't look at individual files for WebReferences directories
                if (_dirType == CodeDirectoryType.WebReferences)
                {
                    continue;
                }

                // Skip neutral files if _onlyBuildLocalizedResources is true
                if (IsResourceCodeDirectoryType(_dirType))
                {
                    if (_onlyBuildLocalizedResources && System.Web.UI.Util.GetCultureName(child.VirtualPath) == null)
                    {
                        continue;
                    }
                }

                BuildProvider buildProvider = BuildManager.CreateBuildProvider(child.VirtualPathObject,
                                                                               (IsResourceCodeDirectoryType(_dirType)) ?
                                                                               BuildProviderAppliesTo.Resources : BuildProviderAppliesTo.Code,
                                                                               _bpc.CompConfig,
                                                                               _bpc.ReferencedAssemblies, false /*failIfUnknown*/);

                // Non-supported file type
                if (buildProvider == null)
                {
                    continue;
                }

                // For Page resources, don't generate a strongly typed class
                if (_dirType == CodeDirectoryType.LocalResources && buildProvider is BaseResourcesBuildProvider)
                {
                    ((BaseResourcesBuildProvider)buildProvider).DontGenerateStronglyTypedClass();
                }

                _buildProviders.Add(buildProvider);
            }
        }
    private void ProcessDirectoryRecursive(VirtualDirectory vdir, bool topLevel) {

        // If it's a WebReferences directory, handle it using a single WebReferencesBuildProvider
        // instead of creating a different BuildProvider for each file.
        if (_dirType == CodeDirectoryType.WebReferences) {
            // Create a build provider for the current directory
            BuildProvider buildProvider = new WebReferencesBuildProvider(vdir);
            buildProvider.SetVirtualPath(vdir.VirtualPathObject);
            _buildProviders.Add(buildProvider);

            AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.WebReferences);
        }
        else if (_dirType == CodeDirectoryType.AppResources) {
            AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.GlobalResources);
        }
        else if (_dirType == CodeDirectoryType.LocalResources) {
            AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.LocalResources);
        }
        else if (_dirType == CodeDirectoryType.MainCode || _dirType == CodeDirectoryType.SubCode) {
            AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.Code);
        }

        // Go through all the files in the directory
        foreach (VirtualFileBase child in vdir.Children) {

            if (child.IsDirectory) {

                // If we are at the top level of this code directory, and the current
                // subdirectory is in the exclude list, skip it
                if (topLevel && _excludedSubdirectories != null &&
                    _excludedSubdirectories.Contains(child.Name)) {
                    continue;
                }

                // Exclude the special FrontPage directory (VSWhidbey 116727)
                if (child.Name == "_vti_cnf")
                    continue;

                ProcessDirectoryRecursive(child as VirtualDirectory, false /*topLevel*/);
                continue;
            }

            // Don't look at individual files for WebReferences directories
            if (_dirType == CodeDirectoryType.WebReferences)
                continue;

            // Skip neutral files if _onlyBuildLocalizedResources is true
            if (IsResourceCodeDirectoryType(_dirType)) {
                if (_onlyBuildLocalizedResources && System.Web.UI.Util.GetCultureName(child.VirtualPath) == null) {
                    continue;
                }
            }

            BuildProvider buildProvider = BuildManager.CreateBuildProvider(child.VirtualPathObject,
                (IsResourceCodeDirectoryType(_dirType)) ?
                    BuildProviderAppliesTo.Resources : BuildProviderAppliesTo.Code,
                _bpc.CompConfig,
                _bpc.ReferencedAssemblies, false /*failIfUnknown*/);

            // Non-supported file type
            if (buildProvider == null)
                continue;

            // For Page resources, don't generate a strongly typed class
            if (_dirType == CodeDirectoryType.LocalResources && buildProvider is BaseResourcesBuildProvider) {
                ((BaseResourcesBuildProvider)buildProvider).DontGenerateStronglyTypedClass();
            }

            _buildProviders.Add(buildProvider);
        }
    }
 private void ProcessDirectoryRecursive(VirtualDirectory vdir, bool topLevel)
 {
     if (this._dirType == CodeDirectoryType.WebReferences)
     {
         BuildProvider o = new WebReferencesBuildProvider(vdir);
         o.SetVirtualPath(vdir.VirtualPathObject);
         this._buildProviders.Add(o);
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.WebReferences);
     }
     else if (this._dirType == CodeDirectoryType.AppResources)
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.GlobalResources);
     }
     else if (this._dirType == CodeDirectoryType.LocalResources)
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.LocalResources);
     }
     else if ((this._dirType == CodeDirectoryType.MainCode) || (this._dirType == CodeDirectoryType.SubCode))
     {
         this.AddFolderLevelBuildProviders(vdir, FolderLevelBuildProviderAppliesTo.Code);
     }
     foreach (VirtualFileBase base2 in vdir.Children)
     {
         if (base2.IsDirectory)
         {
             if (((!topLevel || (this._excludedSubdirectories == null)) || !this._excludedSubdirectories.Contains(base2.Name)) && !(base2.Name == "_vti_cnf"))
             {
                 this.ProcessDirectoryRecursive(base2 as VirtualDirectory, false);
             }
         }
         else if ((this._dirType != CodeDirectoryType.WebReferences) && ((!IsResourceCodeDirectoryType(this._dirType) || !this._onlyBuildLocalizedResources) || (Util.GetCultureName(base2.VirtualPath) != null)))
         {
             BuildProvider provider2 = BuildManager.CreateBuildProvider(base2.VirtualPathObject, IsResourceCodeDirectoryType(this._dirType) ? BuildProviderAppliesTo.Resources : BuildProviderAppliesTo.Code, this._bpc.CompConfig, this._bpc.ReferencedAssemblies, false);
             if (provider2 != null)
             {
                 if ((this._dirType == CodeDirectoryType.LocalResources) && (provider2 is BaseResourcesBuildProvider))
                 {
                     ((BaseResourcesBuildProvider) provider2).DontGenerateStronglyTypedClass();
                 }
                 this._buildProviders.Add(provider2);
             }
         }
     }
 }