如何访问 .NET Standard 2.0 DLL 中的文件?
How to access a file in .NET Standard 2.0 DLL?
感谢您的光临。
这是我面临的问题,希望得到一些帮助。
我正在尝试访问 .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 read/write 到文件。如果我在 UWP 应用程序的 ViewModel 中 read/write 它将起作用,但我不想这样做。是否可以在我的 DLL 中添加对 Windows.Storage 的引用,或者是否有替代方法来访问 DLL 中的文件?
在此先感谢您的帮助!
更新
此 post 中的信息已过时。请参考.
原回答
遗憾的是,如果没有 StorageFile
API,您将无法访问任何文件路径。当用户使用 FilePicker
授予您访问文件的权限并且您以 StorageFile
的形式获得引用时,您仍然无法直接使用 System.IO
类.
同时您不能在 .NET Standard 库中使用 StorageFile
API。但是,您可以做的是从 StorageFile
中获取 System.IO.Stream
,然后您可以在 .NET Standard 库中使用它:
var readStream = await file.OpenStreamForReadAsync();
var writeStream = await file.OpenStreamForWriteAsync();
要访问此扩展方法,请确保将 using System.IO;
添加到源代码文件的顶部。
感谢您的光临。
这是我面临的问题,希望得到一些帮助。
我正在尝试访问 .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 read/write 到文件。如果我在 UWP 应用程序的 ViewModel 中 read/write 它将起作用,但我不想这样做。是否可以在我的 DLL 中添加对 Windows.Storage 的引用,或者是否有替代方法来访问 DLL 中的文件?
在此先感谢您的帮助!
更新
此 post 中的信息已过时。请参考
原回答
遗憾的是,如果没有 StorageFile
API,您将无法访问任何文件路径。当用户使用 FilePicker
授予您访问文件的权限并且您以 StorageFile
的形式获得引用时,您仍然无法直接使用 System.IO
类.
同时您不能在 .NET Standard 库中使用 StorageFile
API。但是,您可以做的是从 StorageFile
中获取 System.IO.Stream
,然后您可以在 .NET Standard 库中使用它:
var readStream = await file.OpenStreamForReadAsync();
var writeStream = await file.OpenStreamForWriteAsync();
要访问此扩展方法,请确保将 using System.IO;
添加到源代码文件的顶部。