gpt4 book ai didi

c# - 移植 .NET 库以便在 UWP App 中重用

转载 作者:行者123 更新时间:2023-11-30 23:07:12 25 4
gpt4 key购买 nike

我正在开展一个项目,以在 UWP 应用程序中重用我的一个旧 .NET 库。我读了几篇关于.NET 2.0 标准库。

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

我按照那篇文章中的步骤创建了一个新的 .NET Standard 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) 创建一个重载并使用 StorageFile 打开一个 Stream:

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

不确定您的Parse 函数是如何工作的,但希望您只关心Stream 实现,而不是FileStream

关于c# - 移植 .NET 库以便在 UWP App 中重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com