0

我编写了小型 WM 6.1 应用程序,它可以读取和写入 xml,但出现以下异常:

System.PlatformNotSupportedException was unhandled
  Message="PlatformNotSupportedException"
  StackTrace:
       at System.Globalization.CompareInfo..ctor(Int32 culture)
       at System.Globalization.CompareInfo.GetCompareInfo(Int32 culture)
       at System.Globalization.CultureInfo.get_CompareInfo()
       at System.CultureAwareComparer..ctor(CultureInfo culture, Boolean ignoreCase)
       at System.StringComparer.Create(CultureInfo culture, Boolean ignoreCase)
       at System.Data.DataTable.GetSpecialHashCode(String name)
       at System.Data.DataColumnCollection.RegisterColumnName(String name, DataColumn column, DataTable table)
       at System.Data.DataColumnCollection.BaseAdd(DataColumn column)
       at System.Data.DataColumnCollection.AddAt(Int32 index, DataColumn column)
       at System.Data.DataColumnCollection.Add(DataColumn column)
       at System.Data.DataColumnCollection.Add(String columnName, Type type)
       at MyApp.Settings.CreateDT(String Setting, String Key, String Value)
       at MyApp.Program.Main()

这里是 CreatDT 方法体:

public static DataTable CreateDT(string Setting, string Key, string Value)
        {
            DataTable dt;
            dt = new DataTable(Setting);
            dt.Columns.Add("Key", Type.GetType("System.String"));   //<-- error here
            dt.Columns.Add("Value", Type.GetType("System.String"));
            AddRow(ref dt, Key, Value);
            return dt;
        }

任何身体帮助?

4

2 回答 2

0

无论是否Type.GetType("System.String")会导致您出错,我都建议您typeof(String)在评论中采纳 Alex 的建议。

话虽如此,尝试在有问题的例程周围放置一个临时的 try...catch 块,以获得更详细的错误消息。

public static DataTable CreateDT(string Setting, string Key, string Value)
{
  DataTable dt = new DataTable(Setting);
  try {
    dt.Columns.Add("Key", typeof(String));   //<-- error here
    dt.Columns.Add("Value", typeof("String"));
    AddRow(ref dt, Key, Value);
  } catch (Exception err) {
    MessageBox.Show(err.Message);
    if (err.InnerException != null) {
      MessageBox.Show(err.InnerException.Message);
    }
  }
  return dt;
}

谁知道?“Key”可以是保留字。您可能必须使用其他东西,例如“ID”。

编辑:我刚刚注意到您为您的DataTable: Setting提供了一个名称。如果这是一些不允许的名称值(例如“设置:$95 >> $110”),那么您的表可能永远不会被创建。

于 2012-08-13T19:18:59.190 回答
0

如果是 PlatformNotSupportedException 则问题取决于系统中不存在的功能。可能缺少一些 Compact Framework 组件。

您可以尝试选择下面标记的选项(不幸的是它在图片上被取消选择),看看它是否有帮助。

在此处输入图像描述

于 2012-08-13T12:59:24.830 回答