2016-09-23 10 views
0

Csvhelper(バージョン2.16)を使用してレコードをcsvファイルに書き込みます。Csvhelperを使用中にMissingMethodExceptionが発生しました。UseExcelLeadingZerosFormatForNumerics = trueを設定しています。

https://joshclose.github.io/CsvHelper/#getting-started

私はcsvファイルを書きながら私はUseExcelLeadingZerosFormatForNumerics =真のコンフィギュレーションを使用していた 、生成されたCSVファイルはExcel形式で開かれたときに先行ゼロを維持したいです。

using (SqlDataReader dataReader = sqlHelper.ExecuteReader(sqlQuery, parameters)) 
       { 
        using (StreamWriter writer = new StreamWriter(csvfilepathTowrite)) 
        { 
         CsvConfiguration config = new CsvConfiguration 
         { 
          UseExcelLeadingZerosFormatForNumerics = true 
         }; 

         var csv = new CsvWriter(writer, config); 

         if (dataReader != null) 
         { 
          for (var i = 0; i < dataReader.FieldCount; i++) 
          { 
           csv.WriteField(dataReader.GetName(i)); 
          } 
          csv.NextRecord(); 
          while (dataReader.Read()) 
          { 
           for (var i = 0; i < dataReader.FieldCount; i++) 
           { 
            csv.WriteField(dataReader[i]); 
           } 
           csv.NextRecord(); 
          } 
         } 
         else 
         { 
          //exception 
         } 
        } 
       } 

が、それは例外に見つからない

方法以下のスロー: 'ボイドCsvHelper.Configuration.CsvConfiguration.set_UseExcelLeadingZerosFormatForNumerics(ブール値)'。

ここで問題が発生する可能性がありますか?

おかげで、 て、Amol

+1

コンパイルに使用したCsvHelperとは異なるバージョンのCsvHelperをデプロイしました。 – CodeCaster

+0

ありがとうございましたCodeCaster。現在、私はビジュアルスタジオアプリケーションでのデバッグを展開していません。 – amol

+0

これで、私のソリューションのすべてのプロジェクトのcsvhelperが更新されました。今、エラーはなくなりました。ありがとう!!! – amol

答えて

2

MissingMethodExceptionは、ほとんどの場合、アプリケーションがコンパイルに使用されたアセンブリとは異なるバージョンのアセンブリを使用して実行されていることを意味します。

この場合は、メインアプリケーションから参照される別のプロジェクトで、CsvHelperライブラリの古いバージョンが使用され、そのプロパティが存在せず、そのゲッターメソッドが見つからないために発生しました。

ソリューション内のすべてのプロジェクトが同じバージョンのライブラリを参照していることを確認して、ビルド時にアセンブリが古いバージョンで上書きされないようにします。

+0

素晴らしい!ありがとう!! – amol

1

単純なデータでテストし、期待通りに働いていた:

 var data = new Dictionary<string, object> { 
      {"Field1", "a string"}, 
      {"Field2", "00001"} 
     }; 
     using(var writer = new StringWriter()) 
     { 
      var config = new CsvConfiguration { UseExcelLeadingZerosFormatForNumerics = true }; 
      var csv = new CsvWriter(writer, config); 
      if(data != null) 
      { 
       foreach(var key in data.Keys) 
       { 
        csv.WriteField(key); 
       } 
       csv.NextRecord(); 
       foreach (var key in data.Keys) 
       { 
        csv.WriteField(data[key]); 
       } 
       csv.NextRecord(); 
      } 
     } 

出力は次のとおりです。

フィールド1、フィールド2

文字列、= "00001"

Cのミスマッチバージョンデプロイメント環境のsvHelper.dll?

関連する問題