Word add-in 通过ConfigurationManager读取configuration文件的方法
在一般的application中我们是这样读取configuration文件的
Dim DBconfig As System.Configuration.Configuration = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None)
但是这个在Office的Add-in上是行不通的。这样的话程序会在Office的安装文件夹下寻找相应的configuration(例如:C:\Program Files x(86)\Microsoft Office\Office14\WINWORD.config)。所以我们要通过AppDomain来获得正确的configuration路径。另外,在发布时(我试过Click Once发布,所以在此以Click Once发布为准)一般不会把***.dll.config一起发布出去。所以在Add-in的ThisAddIn_Startup方法中必须有建立configuration文件的语句,以防出错。一下是一个实力:
Imports System.Xml Imports System.IO Public Class ThisAddIn Public DBconfig As System.Configuration.Configuration Public dd As String Private Sub ThisAddIn_Startup() Handles Me.Startup Dim Writer As XmlWriter Dim WriterSetting As XmlWriterSettings If File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) Then Else WriterSetting = New XmlWriterSettings WriterSetting.Indent = True WriterSetting.IndentChars = " " Writer = XmlWriter.Create(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, WriterSetting) Writer.WriteStartElement("configuration") Writer.WriteStartElement("connectionStrings") Writer.WriteEndElement() Writer.WriteEndElement() Writer.Close() End If ChangeConnectionString("Test") dd = DBconfig.ConnectionStrings.ConnectionStrings("SKBMall.MySettings.SKBOfficeDBConnectionString").ConnectionString Application.ActiveDocument.Range().Text = dd End Sub Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown End Sub Friend Sub ChangeConnectionString(ByVal strConn As String) Dim Con As Object DBconfig = System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.Replace(".config", "")) Con = DBconfig.ConnectionStrings.ConnectionStrings("SKBMall.MySettings.SKBOfficeDBConnectionString") If Con IsNot Nothing Then DBconfig.ConnectionStrings.ConnectionStrings("SKBMall.MySettings.SKBOfficeDBConnectionString").ConnectionString = strConn Else DBconfig.ConnectionStrings.ConnectionStrings.Add(New System.Configuration.ConnectionStringSettings("SKBMall.MySettings.SKBOfficeDBConnectionString", strConn, "dddd")) End If DBconfig.Save(System.Configuration.ConfigurationSaveMode.Modified) System.Configuration.ConfigurationManager.RefreshSection(DBconfig.ConnectionStrings.SectionInformation.Name) My.Settings.Reload() End Sub End Class
相关资源:http://download.csdn.net/detail/tx_officedev/4173281
征诛志异,三让两家王朝;功同开辟,一桮万古江南。