2016-09-25 1 views
2

내 응용 프로그램을 .NET Framework 4.5와 호환되게하려면 BinaryFormatter 필연적으로 필요합니다..NETStandard, Version = v1.7에서 BinaryFormatter에 액세스하는 방법

NET 코어의 이전 버전에서는 불가능하다는 것을 알고 있습니다. 그러나은 현재 v1.7 릴리즈로 계획되어 있으며 현재 미리보기 버전으로 제공됩니다.

BinaryFormatterSystem.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의 훌륭한 사용 사례입니다. 나는 당신이 알지 못하고 그 두 가지 경우 중 하나를 사용하지 않는다면 당신에게 머리를 드리고 싶었습니다. –

답변

1

밤에 설치할 생각은 없습니다. 이 기능은 .NET 코어 프레임 워크에없는,하지만 당신은 여전히 ​​당신이 방금 당신의 .NET의 핵심 응용 프로그램을 실행하려면 .NET 프레임 워크 4.5 네임 스페이스를 사용하는 응용 프로그램, 당신은 컴파일러 지시문

#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"섹션에서 모니 커 추가/변경을 변경하여이 작업을 수행 할 수 있습니다.

관련 문제