2

我有一個包含自定義活動和自定義設計器(WPF)的WF服務。我想添加一個驗證來檢查web.config文件中是否存在某個值。如何閱讀WF4工作流服務中自定義活動設計器中的Web.Config文件

在運行時,我可以重載void CacheMetadata(ActivityMetadata metadata),因此我可以在那裏愉快地使用System.Configuration.ConfigurationManager來讀取配置文件。

由於我也想在設計時做到這一點,我正在尋找一種方法在設計師中做到這一點。

回答

3

好吧,我有一個解決辦法:

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

注:不要忘記你可能需要嘗試捕撈的船載在這裏

相關問題