2017-11-28 3 views
1

UWP 앱에서 이전 .NET 라이브러리 중 하나를 재사용하기 위해 프로젝트를 진행 중입니다. .NET 2.0 표준 라이브러리에 대한 기사를 읽었습니다. UWP 애플 리케이션에서 재사용하기 위해 .NET 라이브러리 포팅

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-migrate

는 그 문서의 단계를 따라하고 새로운 .NET 표준 2.0 라이브러리를 생성, 새로운 라이브러리 프로젝트에 예전 소스 파일을 복사 누락 된 NuGet 패키지를 설치하고 오류없이 프로젝트를 컴파일 .

다음 단계는 UWP 앱을 만들고 라이브러리 프로젝트를 참조로 추가하는 것입니다.

내 라이브러리는 한 형식의 파일을 다른 형식으로 변환합니다. 따라서 System.IO 및 System.Xml.Serialization 네임 스페이스를 사용합니다. 파일 읽기 및 쓰기에 대한 보안 설정이 UWP 및 Windows Store 응용 프로그램에서 변경되었으며이 은 몇 가지 문제를 일으키는 것으로 알고 있습니다.

나는 당신이 파일 경로 자체가 나머지에 대해 처리됩니다 라이브러리를 통과해야 그런 식으로 내 라이브러리의 인터페이스 디자인이

FileOpenPicker fileOpenPicker = new FileOpenPicker(); 

fileOpenPicker.SuggestedStartLocation = PickerLocationId.Desktop; 

fileOpenPicker.FileTypeFilter.Clear(); 

fileOpenPicker.FileTypeFilter.Add(".txt"); 

StorageFile file = await fileOpenPicker.PickSingleFileAsync(); 

// and here I am calling my Library 

var doc = ParserFactory.Parse(file.Path); 

// and that's what my library is trying to do 

.... 
var myfile = File.OpenRead(filename) 

// File.OpenRead throws a Security Exception. 

같은 파일을 여는입니다.

누군가 보안상의 문제를 피하는 해결책을 알고 있습니까? 내 라이브러리를 다시 작성하지 말고 은 내 라이브러리를 Windows.Storage 네임 스페이스로 "오염"합니다. 사전에

덕분에

답변

1

나의 추천 ParserFactory.Parse(Stream stream)에 대한 과부하를 만들고 엽니 다 StorageFile를 사용하는 것입니다 Stream :

var file = await fileOpenerPicker.PickSingleFileAsync(); 
var stream = await file.OpenStreamForReadAsync(); 
var doc = ParserFactory.Parse(stream); 

당신의 Parse 기능이 작동하지만 잘하면 모든 당신이 걱정하는 방법 확실하지 구현이며 FileStream이 아닙니다.