0

私はxmlに読み書きする小さなWM 6.1アプリを書いていますが、次の例外が発生します:

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)

そうは言っても、問題のあるルーチンの周りに一時的な 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;
}

知るか?「キー」は予約語である可能性があります。「ID」など、他のものを使用する必要がある場合があります。

編集:DataTable : Settingの名前を指定していることに気付きました。それが許可されていない名前の値 (「設定: $95 >> $110」など) である場合、テーブルが作成されない可能性があります。

于 2012-08-13T19:18:59.190 に答える
0

PlatformNotSupportedException の場合、問題はシステムに存在しない機能に依存しています。おそらくいくつかの Compact Framework コンポーネントが不足しています。

下にマークされているオプションを選択してみてください (残念ながら、写真では選択されていません)。

ここに画像の説明を入力

于 2012-08-13T12:59:24.830 に答える