开发时遇到的问题,列出来大家分享
vs2005以后的版本就不用这么麻烦了。
网上有朋友用xml解析的方法修改appconfig文件,可是还要重启程序。
可以用ini文件来设置程序的连接信息
"//deploy.ini 是自定义的配置文件名称,它的位置就是你程序安装的位置
#region API函数声明#region API函数声明
[DllImport("kernel32")]//返回0表示失败,非0为成功
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
/// <summary>
/// 返回取得字符串缓冲区的长度
/// </summary>
/// <param name="section">节Section的名字用[]括起来</param>[section]
/// <param name="key">等号左边字段名</param>key=value
/// <param name="def">当在配置文件中没有找到具体的Value时,就用def的值来代替</param>
/// <param name="retVal"></param>
/// <param name="size"></param>
/// <param name="filePath">配置文件所在路径</param>
/// <returns></returns>
[DllImport("kernel32")]//返回取得字符串缓冲区的长度
private static extern long GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
#endregion
#region 读Ini文件#region 读Ini文件
/// <summary>
/// 读Ini文件#region 读Ini文件
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="NoText">当在配置文件中没有找到具体的Value时,就用NoText的值来代替</param>
/// <param name="iniFilePath">配置文件所在路径</param>
/// <returns></returns>
//public static string ReadIniData(string Section,string Key,string NoText,string iniFilePath)
public static string ReadIniData(string Section,string Key)
{
string iniFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "//deploy.ini";
if(File.Exists(iniFilePath))
{
StringBuilder temp = new StringBuilder(1024);
//GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
GetPrivateProfileString(Section,Key,"",temp,1024,iniFilePath);
return temp.ToString();
}
else
{
return string.Empty;
}
}
#endregion
#region 写Ini文件
/// <summary>
/// 写Ini文件
/// </summary>
/// <param name="Section">[段名]</param>
/// <param name="Key">字段名</param>
/// <param name="Value">字段对应值</param>
/// <returns></returns>
public static bool WriteIniData(string Section,string Key,string Value)
{
string iniFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "//deploy.ini";
if(File.Exists(iniFilePath))
{
long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);
if(OpStation == 0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
#endregion
appconfig文件的更改自己也找了一个可行的方法
/// <summary>
/// 更改app.config节点值
/// </summary>
/// <param name="Key">节点名称</param>
/// <param name="Xvalue">值</param>
public static void UpdateConfig(string Key, string Xvalue)
{
XmlDocument doc = new XmlDocument();
doc.Load(Application.ExecutablePath + ".config");
XmlNode node = doc.SelectSingleNode(@"//add[@key='" + Key + "']");
XmlElement ele = (XmlElement)node;
ele.SetAttribute("value", Xvalue);
doc.Save(Application.ExecutablePath + ".config");
}