System.IO.File.Open in netstandard2.0 library from xamarin.forms in UWP fileaccess UnauthorizedAccessException

System.IO.File.Open in netstandard2.0 library from xamarin.forms in UWP fileaccess UnauthorizedAccessException,xamarin.forms,uwp,.net-standard-2.0,file-access,Xamarin.forms,Uwp,.net Standard 2.0,File Access,我目前在我的全球Xamarin.Forms移动应用程序项目中有一个处理程序。此处理程序包含位于用户文档目录中的文本文件上的System.Io.File.Open 但是,在运行UWP应用程序时,它会抛出以下内容: Exception thrown: 'System.UnauthorizedAccessException' in System.IO.FileSystem.dll System.UnauthorizedAccessException: Access to the path 'C:\U

我目前在我的全球Xamarin.Forms移动应用程序项目中有一个处理程序。此处理程序包含位于用户文档目录中的文本文件上的System.Io.File.Open

但是,在运行UWP应用程序时,它会抛出以下内容:

Exception thrown: 'System.UnauthorizedAccessException' in System.IO.FileSystem.dll 
System.UnauthorizedAccessException: Access to the path 'C:\Users' is denied.
我对Xamarin.Forms和UWP都没有太多经验,所以我可能从一开始就做错了什么。在发布这个问题之前,我做了一些研究,了解到UWP运行在沙箱中,需要用户权限才能访问特定位置内的目录和/或文件

但是,我听说在
Package.appxmanifest
中设置以下内容将允许访问当前用户有权访问的所有目录:

<rescap:Capability Name="broadFileSystemAccess" />

然而,这对我来说没有任何区别。然后我继续,通过Windows设置允许应用程序访问某个地方提到的文件系统。这也没有解决任何问题

做了更多的研究,发现UWP有自己的IO接口,使用了iStorageHandler和相关的。但就我所见,这些不能在netstandard2.0库中使用


如何处理UWP应用程序中包含的netstandard2.0库中的文件操作?

不确定是否有适合UWP应用程序的其他答案,如果有,请将它们放在此处。然而,不耐烦的我,想继续前进,决定使用WPF代替。幸运的是,Xamarin.Forms还支持WPF和WinForms。对于WPF,您可以按照官方的说明在此处进行操作:


对我来说幸运的是,我计划在Windows10之前支持Windows,所以这是一个给定的条件,我必须切换

不确定是否有适合UWP应用的其他答案,如果有,请将它们放在这里。然而,不耐烦的我,想继续前进,决定使用WPF代替。幸运的是,Xamarin.Forms还支持WPF和WinForms。对于WPF,您可以按照官方的说明在此处进行操作:


对我来说幸运的是,我计划在Windows10之前支持Windows,所以这是一个给定的条件,我必须切换

broadFilesystemAccess功能将允许应用程序访问所有用户可访问的文件,但只能通过两种机制:

  • Windows.Storage
    api;或
  • CreateFileFromApp
    和类似的Win32 API

由于.NET不在封面下使用任何一种API,因此它无法访问应用程序包/数据文件夹之外的位置。

broadFilesystemAccess功能将允许应用程序访问所有用户可访问的文件,但只能通过两种机制:

  • Windows.Storage
    api;或
  • CreateFileFromApp
    和类似的Win32 API
由于.NET不使用这些API中的任何一个,因此它无法访问应用程序包/数据文件夹之外的位置