代码之家  ›  专栏  ›  技术社区  ›  Preet Sangha

如何在WF4工作流服务的自定义活动设计器中读取web.config文件

  •  2
  • Preet Sangha  · 技术社区  · 14 年前

    我有一个带有自定义活动和自定义设计器(WPF)的WF服务。我想添加一个验证,以检查web.config文件中是否存在某个值。

    在运行时我可以超载 void CacheMetadata(ActivityMetadata metadata) 因此我可以使用 System.Configuration.ConfigurationManager 读取配置文件。

    因为我也想在设计时这样做,所以我在设计师那里寻找一种方法。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Preet Sangha    14 年前

    好的,我有一个解决方案:

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

    注: 别忘了,你可能需要一船的尝试捕获在这里。