Как прочитать файл Web.Config в конструкторе пользовательских действий в службе рабочих процессов WF4 - PullRequest
2 голосов
/ 11 мая 2010

У меня есть служба WF с пользовательским действием и дизайнером (WPF). Я хочу добавить проверку, которая будет проверять наличие какого-либо значения в файле web.config.

Во время выполнения я могу перегрузить void CacheMetadata (метаданные ActivityMetadata) , и, таким образом, я могу выполнить проверку там с помощью System.Configuration.ConfigurationManager для чтения файла конфигурации.

Поскольку я также хочу сделать это во время разработки, я искал способ сделать это в конструкторе.

1 Ответ

3 голосов
/ 12 мая 2010

Хорошо, у меня есть одно решение:

    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;
}

Примечание: Не забывайте, что вам, вероятно, здесь понадобится лодка с попытками ловить здесь

...