在一般的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