1

mono と monobjc を使用して、Mac OS X 10.6 で実行するアプリケーションを開発しています。ICSharpCode.SharpZip を使用して、いくつかのファイルを zip ファイルに追加しています。コードは次のとおりです-

var ms = new MemoryStream();
var zipStream = new ZipOutputStream(ms); 
zipStream.PutNextEntry(new ZipEntry(Path.GetFileName(file))
         {DateTime = File.GetCreationTime(file), 
          Size = new FileInfo(file).Length});

常にではありませんが、PutNewEntry コードが次の例外をスローする場合があります -

System.NotSupportedException: System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000] でサポートされていない CodePage 437 .SharpZipLib.Zip.ZipConstants.ConvertToArray (Int32 フラグ、System.String str) [0x00000] in :0 at ICSharpCode.SharpZipLib.Zip.ZipOutputStream.PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry エントリ) [0x00000] in :0 at (wrapper remoting-invoke-with-check) ICSharpCode.SharpZipLib.Zip.ZipOutputStream:PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry)

次の2つの質問があります-

  1. 上記の例外の原因は何ですか。
  2. ICSharp は最適なオプションではないようです。より良い代替手段は何ですか?.
4

1 に答える 1

0

zip を使用する代わりに tar.gzip を作成することで、これを修正しました。tar ファイルの作成には ICSharp 自体を使用しました。Mac は zip を好まないようです。また、Mac 側では Mono フレームワークで ICSharp を使用し、Windows 側では ICSharp (Web からダウンロード) を使用していたことが原因である可能性もあります。しかし、tar.gzip を使用すると、この問題は解決しました。

于 2011-05-31T16:37:16.623 に答える