如何访问.NET Standard 2.0 DLL中的文件?

时间:2018-02-15 19:29:32

标签: c# uwp .net-standard-2.0

感谢您的光临。

这是我面临的问题,并希望得到一些帮助。

我正在尝试访问.NET标准DLL中的文件。如果我在测试UWP应用程序中使用Windows.Storage命名空间,一切都有效,如下所示:

Windows.Storage.StorageFile f = await StorageApplicationPermissions.FutureAccessList.GetFileAsync("TestPickedFileToken1");
        txt.Text = await Windows.Storage.FileIO.ReadTextAsync(f);

真正的应用程序是一个访问.NETStandard 2.0 DLL的MVVM UWP应用程序(针对Fall Creators Update)。问题是我无法找到包含Windows.Storage命名空间的程序集以添加到我的DLL中。它在UWP中可用,当我尝试在System.IO中使用以下内容时,它允许我访问DLL中的路径拒绝错误:

string s = File.ReadAllText(filename);

我需要从DLL读取/写入文件。如果我在UWP应用程序的ViewModel中读/写但我不想这样做,它会工作。是否可以在我的DLL中添加对Windows.Storage的引用,或者是否有替代方法来访问DLL中的文件?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

更新

这篇文章中的信息已经过时。请参阅for example here

原始答案

很遗憾,如果没有StorageFile API,您将无法访问任何文件路径。当用户使用FilePicker授予您访问文件的权限并且您获得StorageFile形式的引用时,您仍然无法直接使用System.IO类访问该相同路径

同时,您无法在.NET标准库中使用StorageFile API。但是,您可以从System.IO.Stream获取StorageFile,然后可以在.NET标准库中使用该文件:

var readStream = await file.OpenStreamForReadAsync();
var writeStream = await file.OpenStreamForWriteAsync();

要访问此扩展方法,请务必将using System.IO;添加到源代码文件的顶部。