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


posted @ 2012-03-26 13:48  许阳 无锡  阅读(244)  评论(0编辑  收藏  举报