IVsApplicationConfiguration Interface

 

Provides an interface for use when working with configuration files.

Namespace:   Microsoft.VisualStudio.ManagedInterfaces9
Assembly:  Microsoft.VisualStudio.ManagedInterfaces.WCF (in Microsoft.VisualStudio.ManagedInterfaces.WCF.dll)

public interface IVsApplicationConfiguration : IDisposable

NameDescription
System_CAPS_pubmethodDispose()

(Inherited from IDisposable.)

System_CAPS_pubmethodFileExists()

Returns a value indicating whether a configuration file exists on disk.

System_CAPS_pubmethodFilePath()

Returns the path for a configuration file.

System_CAPS_pubmethodLoadConfiguration()

Loads the configuration for a given hierarchy/itemid.

System_CAPS_pubmethodQueryEditConfiguration()

Determines if a configuration file can be modified.

NameDescription
System_CAPS_pubeventConfigurationChanged

Occurs when a project's configuration has changed.

The IVsApplicationConfiguration interface is a wrapper for Configuration objects.

Use IVsApplicationConfiguration to provide change notifications and source code control for all configuration files in the configuration hierarchy for the current project. It can also be used to coordinate changes to the underlying text buffers between this instance and other editors that may have the configuration file open.

IVsApplicationConfiguration also handles change notifications caused by adding, deleting, and moving configuration files and folders in a way that may cause the configuration for a given hierarchy/itemid to be invalidated. It also notifies clients that have registered for configuration change notifications.

The following code example demonstrates how to use the IVsApplicationConfiguration interface to modify a configuration file.

/// Make sure that our custom WSDL importer extension is registered in /// the Metadata section of the configuration file for the current 
/// project hierarchy and serviceProvider that gives access to required 
/// services.
private static void EnsureCustomWsdlImporterRegistered
 (IVsHierarchy hierarchy, IServiceProvider serviceProvider)
{
/// The IVsApplicationConfigurationManager service returns a 
/// System.Configuration.Configuration object corresponding to 
/// the given project's app.config or web.config file.
IVsApplicationConfigurationManager cfgMgr = 
 serviceProvider.GetService(typeof(IVsApplicationConfigurationManager))
 as IVsApplicationConfigurationManager;
    // Return the current application's configuration file by using 
    // the IVsApplicationConfiguration APIs. Make sure that the 
    // instance that is returned is disposed of correctly in order 
    // to clean up any event hooks or docdatas.
    using (IVsApplicationConfiguration appCfg = 
 cfgMgr.GetApplicationConfiguration(hierarchy, 
 Microsoft.VisualStudio.VSConstants.VSITEMID_ROOT))
    {
        System.Configuration.Configuration cfg = 
 appCfg.LoadConfiguration();

        // Check the file out from Source Code Control if it 
        // exists.
        appCfg.QueryEditConfiguration();

        /// After a System.Configuration.Configuration object
        /// exists, use the"normal" .NET Framework configuration
        /// APIs to return the sections that you want to modify.
        ServiceModelSectionGroup sg = 
 ServiceModelSectionGroup.GetSectionGroup(cfg);
        Type importerType = typeof(BindingPickerWsdlImportExtension);
        if (!IsWsdlImporterRegistered(sg, importerType))
        {
            // If our custom WSDL importer is not registered, add 
            // it to the application's configuration file.
            sg.Client.Metadata.WsdlImporters.Add(new 
 WsdlImporterElement(importerType));
            cfg.Save();
        }
    }
}
Return to top
Show: