Domanda

Ho un servizio WF con un'attività personalizzata e un designer personalizzato (WPF). Voglio aggiungere una convalida che verificare la presenza di un certo valore nel file web.config.

In fase di runtime che posso sovraccarico CacheMetadata void (ActivityMetadata metadati) e quindi posso fare la convalida felicemente ci utilizzando System.Configuration.ConfigurationManager per leggere il file di configurazione.

Dato Voglio anche fare questo in fase di progettazione, ero alla ricerca di un modo per fare questo nella finestra di progettazione.

È stato utile?

Soluzione

Ok ho una soluzione:

    string GetWebConfigXml() {

        string configXml = null;

        Window window = null;
        ProjectItem project = null;
        ProjectItem configFile = null;

        try {
            EnvDTE.DTE dte = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)) as DTE;
            if(dte == null) return null;

            project = dte.Solution.FindProjectItem(dte.ActiveDocument.FullName);
            configFile = (from ProjectItem childItem in project.ProjectItems
                            where childItem.Name.Equals("web.config", StringComparison.OrdinalIgnoreCase)
                            select childItem).FirstOrDefault();

            if (configFile == null) return null;

            if (!configFile.IsOpen) window = configFile.Open();
            var selection = (TextSelection)configFile.Document.Selection;
            selection.SelectAll();
            configXml = selection.Text;
        } finally {

            //Clean up the COM stuff

            if (window != null) {
                window.Close(vsSaveChanges.vsSaveChangesNo);
                window = null;
            }

            if (configFile != null) { 
                configFile = null; 
            }

            if (project != null) {
                project = null;
            }
        }
    }
    return configXml;
}

Nota: non dimenticare avrete probabilmente bisogno di una barca carica di catture try qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top