.NET Framework 4.6.1을 대상으로 하는 앱부터 속성에 ZipArchiveEntry.FullName 사용된 경로 구분 기호가 이전 버전의 .NET Framework에서 사용된 백슬래시("\")에서 슬래시("/")로 변경되었습니다. System.IO.Compression.ZipArchiveEntry 개체는 메서드의 오버로드 중 하나를 호출하여 생성됩니다 ZipFile.CreateFromDirectory .
영향
이 변경으로 인해 .NET 구현은 .ZIP 파일 형식 사양의 섹션 4.4.17.1과 일치하게 되고 비 Windows 시스템에서.ZIP 아카이브의 압축이 풀리게 됩니다.
MacOS와 같은 비 Windows 운영 체제에서 이전 버전의 .NET Framework를 대상으로 하는 앱에서 만든 zip 파일을 압축 해제하면 디렉터리 구조가 유지되지 않습니다. 예를 들어 MacOS에서는 파일 이름이 디렉터리 경로, 백슬래시("\") 문자 및 파일 이름을 연결하는 파일 집합을 만듭니다. 결과적으로 압축을 푼 파일의 디렉터리 구조는 유지되지 않습니다.
이러한 API는 슬래시("/") 또는 백슬래시("\")를 경로 구분 기호 문자로 원활하게 처리할 수 있으므로 .NET Framework System.IO 네임스페이스의 API에 의해 Windows 운영 체제에서 압축 해제된 .ZIP 파일에 대한 이러한 변경의 영향은 최소화되어야 합니다.
완화 방법
이 동작이 바람직하지 않은 경우 애플리케이션 구성 파일의 런타임< 섹션에 구성 설정을 추가하여 옵트아웃할> 수 있습니다. 다음은 <runtime>
섹션과 옵트아웃 스위치를 모두 보여줍니다.
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=true" />
</runtime>
또한 이전 버전의 .NET Framework를 대상으로 하지만 .NET Framework 4.6.1 이상 버전에서 실행되는 앱은 애플리케이션 구성 파일의 런타임< 섹션에 구성 설정을 추가하여 이 동작을 옵트인할> 수 있습니다. 다음은 <runtime>
섹션과 옵트인 스위치를 모두 보여줍니다.
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=false" />
</runtime>
참고하십시오
.NET