C# 移植.NET库以便在UWP应用程序中重用

C# 移植.NET库以便在UWP应用程序中重用,c#,.net,uwp,.net-standard,C#,.net,Uwp,.net Standard,我正在进行一个项目,在UWP应用程序中重用我的一个旧.NET库。我读了几篇关于这个问题的文章 .NET2.0标准库 我按照那篇文章中的步骤创建了一个新的.NET标准2.0库,将旧的源文件复制到新的 库项目,并安装了缺少的NuGet软件包,并编译了该项目,没有任何错误 下一步是创建一个UWP应用程序并添加库项目作为参考 我的库正在将文件从一种格式转换为另一种格式。因此它使用System.IO和System.Xml.Serialization 名称空间。我知道在UWP和Windows应用商店应用程

我正在进行一个项目,在UWP应用程序中重用我的一个旧.NET库。我读了几篇关于这个问题的文章 .NET2.0标准库

我按照那篇文章中的步骤创建了一个新的.NET标准2.0库,将旧的源文件复制到新的 库项目,并安装了缺少的NuGet软件包,并编译了该项目,没有任何错误

下一步是创建一个UWP应用程序并添加库项目作为参考

我的库正在将文件从一种格式转换为另一种格式。因此它使用System.IO和System.Xml.Serialization 名称空间。我知道在UWP和Windows应用商店应用程序中,文件读取和写入的安全设置已更改,并且 导致了一些问题

我正在打开一个这样的文件

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命名空间“污染”我的库


提前感谢

我的建议是为
ParserFactory.Parse(Stream-Stream)
创建一个重载,并使用
存储文件
打开

var file = await fileOpenerPicker.PickSingleFileAsync();
var stream = await file.OpenStreamForReadAsync();
var doc = ParserFactory.Parse(stream);
不确定您的
Parse
函数是如何工作的,但希望您所关心的只是
Stream
实现,而不是
FileStream