How to access a file in .NET Standard 2.0 DLL?

南笙酒味 提交于 2020-01-05 07:31:53

问题


Thank you for visiting.

Here is the issue I am facing and would appreciate some help.

I am trying to access a file in a .NET standard DLL. Everything works if I use the Windows.Storage namespace, in a test UWP app, like so:

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

The real app is a MVVM UWP app (targeting Fall Creators Update) that accesses a .NETStandard 2.0 DLL. The problem is that I can't find the assembly that contains Windows.Storage namespace to add to my DLL. It is available in the UWP and when I try to use the following in System.IO it gives me an access to path denied error in the DLL:

string s = File.ReadAllText(filename);

I need to read/write to the file from the DLL. It will work if I read/write in the ViewModel of the UWP app but I don't want to do that. Is it possible add a reference to Windows.Storage in my DLL or is there an alternative to accessing a file in the DLL?

Thanks in advance for your help!


回答1:


Update

Information in this post is outdated. Please refer for example here.

Original answer

Unfortunately you cannot access any file path without the StorageFile API. When the user grants you access to a file using the FilePicker and you get the reference in form of a StorageFile, you still don't have access to that same path directly using System.IO classes.

At the same time you cannot use StorageFile APIs in a .NET Standard library. What you can do however is to get a System.IO.Stream from a StorageFile which you can then use in your .NET Standard library:

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

To access this extension method, make sure to add using System.IO; to the top of your source code file.



来源:https://stackoverflow.com/questions/48814889/how-to-access-a-file-in-net-standard-2-0-dll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!