C# 找不到pinvoke dll';内核32';

C# 找不到pinvoke dll';内核32';,c#,dll,pinvoke,kernel32,missingmethodexception,C#,Dll,Pinvoke,Kernel32,Missingmethodexception,我想在使用windows CE设备的程序中使用ini文件。 我得到了一个异常“找不到pinvoke dll'kernel32'” 我该怎么解决这个问题?请帮帮我 string Path = "c:\\Settings.ini"; [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val,

我想在使用windows CE设备的程序中使用ini文件。 我得到了一个异常“找不到pinvoke dll'kernel32'” 我该怎么解决这个问题?请帮帮我

string Path = "c:\\Settings.ini";
        [DllImport("kernel32")]
         private static extern long WritePrivateProfileString(string section, 
string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal,                                                int size, string filePath);

    public string Read(string Section,string Key,string Value)
    {
        StringBuilder sb = new StringBuilder();
        GetPrivateProfileString(Section, Key, Value, sb, 32, Path).ToString();           // Error occured!!
        return sb.ToString();
    }
它在vs2017有效,但在vs2008无效。
请给我你的答案

首先

您的Visual Studio版本通常不会对Windows API调用的兼容性产生任何影响

其次

您正在调用Windows CE不支持的Windows API

第三

INI文件是一项古老的技术,主要由配置文件取代,这就是世界的发展方式

最后


如果你真的需要读写INI文件,只需下载一个支持它的现成Nuget(不依赖Windows API)就可以省去很多麻烦

Michael Randall在他的回答中提出了一些非常有效的观点,尽管在你编辑旧程序中的文件时,INI处理程序仍然很有用,在我看来,对于简单的人类可读的配置文件,ini仍然很方便;我发现在文本编辑器中打开xml来更改设置非常糟糕,而注册表设置与可移植正好相反

所以,如果你只需要一个ini处理程序,我在几年前为此写了一个小的免费库,用来处理一个旧游戏的文件,该游戏的所有设置和任务都使用ini格式

您可以在这里下载:

镜像:

请注意,与大多数ini实现不同,ini实现只搜索行并返回值,它将整个文件加载到内存中,并将所有内容转换为对象,并跟踪修改的内容,因此虽然它对小型配置文件有用,但不建议将其用于大型数据处理。不久前,一些人在一个在线游戏系统中使用它来扫描一大堆基于ini格式的游戏地图的内容,结果显示速度非常慢


另外请注意,它是,默认为UTF-8,因此,如果您实际上正在读取一些旧程序的设置,您可能需要将其设置为作为Windows-1252加载,或者,如果是DOS程序,则设置为DOS-437加载。由于我在制作此文件时使用的是DOS文件,因此该类提供了一个名为
ENCODING\u DOS\u US
的DOS-437静态预设快捷方式。

我该怎么办?
。从格式化代码开始我怀疑
GetPrivateProfileString
是否可以接受
StringBuilder
作为arg…@nyrguds您完全错了。它将封送拆收器作为调用方提供的缓冲区,由被调用方填写。此API早就不推荐使用了。使用本机C#代码处理ini文件。@DavidHeffernan哦,很有趣。谢谢