好像.NET不支持INI文件了。
请问在.NET下,要使用类似INI一样的配置文件,有什么好的替代方案?

解决方案 »

  1.   

    可以用动态库函数处理        /// <summary>
            /// 配置文件的读取
             /// </summary>
            /// <param name="lpAppName">单元名</param>
            /// <param name="lpKeyName">字段名</param>
            /// <param name="lpDefault">默认返回字段</param>
            /// <param name="lpReturnedString">返回字段</param>
            /// <param name="nSize">返回字段最大长度</param>
            /// <param name="lpFileName"></param>
            /// <returns></returns>
            [System.Runtime.InteropServices.DllImport("kernel32")]
            private static extern int GetPrivateProfileString
            (
               string lpAppName,
               string lpKeyName,
               string lpDefault,
               StringBuilder lpReturnedString,
               int nSize,
               string lpFileName
            );
      或用xml文件进行代替 这个比ini文件好
      

  2.   

    嗯,确实不支持了。
    要读取ini文件,有两种方法:1.调用API,2.直接作为文本文件解析。
    在.net中,仅仅是因为读取ini文件,调用飞托管代码,很不可取。
    直接解析文本文件,比较麻烦。建议用xml文件来代替ini文件,.net对xml的支持相当好。
    用xml文件取代ini文件是一种趋势。
      

  3.   

    是的,.net 一般都用xml做配置文件了
    如果还想采用需要调用api.看下面的例子:   Private   Declare   Function   GetPrivateProfileString   Lib   "kernel32"   Alias   "GetPrivateProfileStringA"   (ByVal   lpApplicationName   As   String,   ByVal   lpKeyName   As   String,   ByVal   lpDefault   As   String,   ByVal   lpReturnedString   As   String,   ByVal   nSize   As   Int32,   ByVal   lpFileName   As   String)   As   Int32 
      
     Private   Declare   Function   WritePrivateProfileString   Lib   "kernel32"   Alias   "WritePrivateProfileStringA"   (ByVal   lpApplicationName   As   String,   ByVal   lpKeyName   As   String,   ByVal   lpString   As   String,   ByVal   lpFileName   As   String)   As   Int32   
        
              
      

  4.   

    看看这里吧?http://nini.sourceforge.net/
      

  5.   


    //以下代码为我自己已测试成功的代码.要感谢一下1楼
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strbld = new StringBuilder(1000);
            int i = GetPrivateProfileString("boot loader", "timeout", "", strbld,strbld.Capacity, @"C:\bootbak.ini");
            string strMyInfo = strbld.ToString();
            Console.WriteLine(strMyInfo);
            Console.ReadKey();        
        }    /// <summary>
        /// 配置文件的读取
        /// </summary>
        /// <param name="lpAppName">单元名</param>
        /// <param name="lpKeyName">字段名</param>
        /// <param name="lpDefault">默认返回字段</param>
        /// <param name="lpReturnedString">返回字段</param>
        /// <param name="nSize">返回字段最大长度</param>
        /// <param name="lpFileName"></param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern int GetPrivateProfileString
        (
           string lpAppName,
           string lpKeyName,
           string lpDefault,
           StringBuilder lpReturnedString,
           int nSize,
           string lpFileName
        );//注意这个方法的写法与C#中的方法略有不同.只是个声明,并带有;号}    
      

  6.   

    API 函数:
    WriteProfileString
    GetProfileString
      

  7.   

    就用XML,那个.config扩展名的文件就是XML
      

  8.   

    用XML,这是趋势,ini已经过时了。
      

  9.   

    .ini的优点就是简单嘛。。用的还是很多的