.Net 下安装打包主要有三个要点,1,目标web 应用的发布设定2,嵌入SQL 脚本进行数据库的创建,赋予初始化参数3,对于Web 应用程序的web.config配置文件写入Sa或其它用户名及密码
.Net 下安装打包主要有三个要点,
1,目标web 应用的发布设定
2,嵌入SQL 脚本进行数据库的创建,赋予初始化参数
3,对于Web 应用程序的web.config配置文件写入Sa或其它用户名及密码
补充一点就是,整合打包,对目标服务器安装环境的检测, 打包时,把.Net Framework也打包进去,生成安装文件。安装PluginInstaller.msi可以在你打包时,把框架打包进去,然后在安装软件时,提醒你是否要安装.Net Framework.。安装PluginInstaller.msi后,再打包编译,在你编译生成的Setup.exe同一文件夹中会出现dotnetfx.exe,langpack.exe等文件,说明框架已经打包进去了”,PluginInstaller.msi的下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=627921a0-d9e7-43d6-a293-72f9c370bd19&DisplayLang=zh-cn
.
难点一,嵌入SQL 脚本进行数据库的创建,赋予初始化参数。
A,读取用用户输入的sa及密码,等数据库服务器,在此以sql server为例,
1,要读取,当然需要有输入框,这个在安装项目上右键—视图—用户界面—显示出了安装的界面的操作树,在启动根上右键—添加对话框,选择合适的文本框后(如文本框A)—文件框A右键—属性—属性窗口则出现了文本框总将出现的输入框属性,以及标题,需要注意的edit1Property,对应着输入框的存放文本框名,
B, 自定义安装模块方法DBCustomAction
1、项目添加一个新项目->选择类库模板->命名为DBCustomAction
2、单击项目右键->添加新项->选择安装程序类(命名为DBCustomAction.cs)这个类是继承自System.Configuration.Install.Installer的类。
主要的VB代码如下
Dim strPass As String
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Dim tdir As String
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Public docName As String = [String].Empty
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Private node As XmlNode = Nothing
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Private _configType As Integer
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Public Overrides Sub Install()Sub Install(ByVal stateSaver As _
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Collections.IDictionary)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MyBase.Install(stateSaver)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' AddDBTable(Me.Context.Parameters.Item("dbname"))
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
strPass = Me.Context.Parameters("strPass") '取得传来的sa密码
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tdir = Me.Context.Parameters("targetdir") '取得传来的安装路径
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If strPass <> "" Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
AddDBTable("ZWT2007SQLDB")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Else
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
updateConfig() ‘修改config文件方法
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private Function GetSql()Function GetSql(ByVal Name As String) As String
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Gets the current assembly.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Resources are named using a fully qualified name.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim strm As Stream = Asm.GetManifestResourceStream( _
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Asm.GetName().Name + "." + Name)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Reads the contents of the embedded file.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim reader As StreamReader = New StreamReader(strm)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return reader.ReadToEnd()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch ex As Exception
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MsgBox("In GetSQL: " & ex.Message)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw ex
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Function
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private Sub ExecuteSql()Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim sqlConnection1 As New SqlClient.SqlConnection
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sqlConnection1.ConnectionString = ("user id=sa;password=" + strPass + ";database=master;server=(local)")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim Command As New SqlClient.SqlCommand(Sql, sqlConnection1)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Command.Connection.Open()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Command.Connection.ChangeDatabase(DatabaseName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Command.ExecuteNonQuery()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Finally
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Finally, blocks are a great way to ensure that the connection
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' is always closed.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Command.Connection.Close()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Protected Sub AddDBTable()Sub AddDBTable(ByVal strDBName As String)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Creates the database.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ExecuteSql("master", "CREATE DATABASE " + strDBName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Creates the tables.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ExecuteSql(strDBName, GetSql("sql.txt")) ‘注意哦,这个是附加到程序中的个txt文件,内容为sql 脚本,项目属性为内嵌资源,不然打包时可能会漏了
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch ex As Exception
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' Reports any errors and abort.
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MsgBox("In exception handler: " & ex.Message)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw ex
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
由上可以看到,需要得到sa的密码,必须从安装项目中传来
3,在安装项目中,右键—视图—用户自定义操作—在自定义操作树的,安装根上右键—添加自定义操作—项目—添加输出,来自项目DBCustomAction主输出,并右键此增加项—属性—CoustomActionData中的值设定传送参数值(如, /strPass=[EDITA1] /targetdir="[TARGETDIR]\" , [EDITA1]是1操作中SA输入密码,默认名[TARGETDIR]则为intall模板中安装文件将存放的位置)
难点二, 对于Web 应用程序的web.config配置文件写入Sa或其它用户名及密码
1, 同上操作1,3可以得到TARGETDIR即目标文件发布安装位置后,可以在DBCustomAction方法中增加updateConfig方法即可
2, VB代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Protected Sub updateConfig()Sub updateConfig()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim t1 As String = ("server=localhost;database=DBname;uid=sa;pwd=" + Me.strPass)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim t2 As String = ("Driver={SQL Server};database=DBname;server=localhost;uid=sa;pwd=" + Me.strPass)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim tttdir As String = Me.tdir + "Administrator\Web.config"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
SetValue(tttdir, "sqlserver", t1)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
SetValue(tttdir, "Adosqlserver", t2)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tttdir = Me.tdir + "Web.config"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
SetValue(tttdir, "sqlserver", t1)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
SetValue(tttdir, "Adosqlserver", t2)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
SetValue#Region "SetValue"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Public Function SetValue()Function SetValue(ByVal dir As String, ByVal key As String, ByVal value As String) As Boolean
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim cfgDoc As New XmlDocument
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
loadConfigDoc(cfgDoc, dir)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' retrieve the appSettings node
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node = cfgDoc.SelectSingleNode("//appSettings")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If node Is Nothing Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw New InvalidOperationException("appSettings section not found")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' XPath select setting "add" element that contains this key
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim addElem As XmlElement = DirectCast(node.SelectSingleNode("//add[@key='" + key + "']"), XmlElement)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If addElem Is Nothing Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' not found, so we need to add the element, key and value
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim entry As XmlElement = cfgDoc.CreateElement("add")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
entry.SetAttribute("key", key)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
entry.SetAttribute("value", value)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node.AppendChild(entry)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Else
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
addElem.SetAttribute("value", value)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
'save it
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
saveConfigDoc(cfgDoc, docName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return True
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return False
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Function
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#End Region '实现对appSettings值的修改
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
saveConfigDoc#Region "saveConfigDoc"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Private Sub saveConfigDoc()Sub saveConfigDoc(ByVal cfgDoc As XmlDocument, ByVal cfgDocPath As String)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim writer As New XmlTextWriter(cfgDocPath, Nothing)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.Formatting = Formatting.Indented
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
cfgDoc.WriteTo(writer)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.Flush()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.Close()
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#End Region '写入操作
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
removeElement#Region "removeElement"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Public Function removeElement()Function removeElement(ByVal elementKey As String) As Boolean
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim cfgDoc As New XmlDocument
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
loadConfigDoc(cfgDoc, "")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' retrieve the appSettings node
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node = cfgDoc.SelectSingleNode("//appSettings")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If node Is Nothing Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw New InvalidOperationException("appSettings section not found")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' XPath select setting "add" element that contains this key to remove
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"))
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
saveConfigDoc(cfgDoc, docName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return True
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return False
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Function
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#End Region '删除appSettings的操作
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
modifyElement#Region " modifyElement"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Public Function modifyElement()Function modifyElement(ByVal elementKey As String) As Boolean
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Dim cfgDoc As New XmlDocument
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
loadConfigDoc(cfgDoc, "Administrator")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' retrieve the appSettings node
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node = cfgDoc.SelectSingleNode("//appSettings")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If node Is Nothing Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Throw New InvalidOperationException("appSettings section not found")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
' XPath select setting "add" element that contains this key to remove
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"))
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
saveConfigDoc(cfgDoc, docName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return True
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Catch
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return False
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Try
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Function
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#End Region '修改 appSettings
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
loadConfigDoc#Region "loadConfigDoc"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Private Function loadConfigDoc()Function loadConfigDoc(ByVal cfgDoc As XmlDocument, ByVal strdir As String) As XmlDocument
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If Convert.ToInt32(ConfigType) = Convert.ToInt32(ConfigFileType.AppConfig) Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
docName += ".exe.config"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Else
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
docName = strdir
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End If
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
cfgDoc.Load(docName)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Return cfgDoc
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Function
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#End Region '载入appSettings信息
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)