2016-09-25 14 views
2

私のアプリケーションを.NET Framework 4.5と互換性を持たせるには、私は必死にBinaryFormatterが必要です。.NETStandard、Version = v1.7からBinaryFormatterにアクセスする方法

以前のバージョンのNETコアでは不可能でした。しかし、私はBinaryFormatterが現在、プレビュー版であるv1.7のリリースに向けて計画されていると思っています。

BinaryFormatterは、System.Runtime.Serialization.Formattersパッケージ/名前空間の一部です。私は自分のコードを動作させるために、このパッケージのナイトリービルドをインストールするにはどうすればよい

https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Serialization.Formatters/src/System.Runtime.Serialization.Formatters.csproj#L57

+3

'BinaryFormatter'は、アセンブリのバージョン管理について非常に厄介です。クロスマシンIPCまたは永続ストレージのどのような形式にも使用することはお勧めできません。別のシリアル化メソッドを使用できる場合は、将来的に安全な頭痛を保存します。 –

+0

私の場合、シリアル化されたオブジェクトはキャッシュエントリであり、異なるランタイム間では共有されません。それらは簡単に再現することもできます。シリアル化の第三者APIであるため、別のシリアル化メソッドを使用することはできません。 – stil

+0

キャッシュとイントラマシンのIPCは、BinaryFormatterの優れた使用例です。私はあなたが気づいていなかった場合、そしてその2つのケースのうちの1つを使用していない場合に、頭をアップしたいと思っていました。 –

答えて

1

夜間にインストールするとは思わない。その機能は、.NETのコアフレームワークではありませんが、あなたはまだあなたのアプリケーションは、.NET Frameworkの4.5名前空間を使用したい場合は、あなただけで、あなたの.NETのコアアプリケーションを実行する場合は、コンパイラ・ディレクティブ

#if net45 
System.Runtime.Serialization.Formatters.Binary; 
public class BinaryFormatSerializer : ISerializer 
{ 
    public string Serialize(object obj) 
    { 
     var serializer = new BinaryFormatter(); 
     string binData = serializer.Serialize(obj); 

     return new BinaryFormatter(binData).Format(); 
    } 
} 
#else // Below you would put whatever logic 
     // to not use 4.5 framework whenever 
     // BinaryFormatter is added to core 

を使用することができます.NET Frameworkの場合、JSON設定ファイルの "frameworks"セクションのモニカの追加/変更を変更することでそれを行うことができます。