UWP清单资产文件

时间:2018-11-17 16:13:32

标签: c# uwp

我正在尝试查看“资产”文件夹中的文件。我可以查看是否存在一个文件,因为它不允许我再次添加它。但是,我想查看调试器中的所有文件,但出现以下错误:

“要检查本机对象,请启用本机代码调试。”

这是我要调试/检查的代码。

StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder assets1 = await appInstalledFolder.GetFolderAsync("Assets");
var files = await assets1.GetFilesAsync();

我添加了以下代码,但仍然出现本机代码错误。

StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
// StorageFolder folder = ApplicationData.Current.LocalFolder;
var options = new QueryOptions();
options.FileTypeFilter.Add(".jpg");//this will add .csv files to query options 
options.FolderDepth = FolderDepth.Deep;//optional
StorageFileQueryResult query = folder.CreateFileQueryWithOptions(options);
IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();

调试器错误:要检查本机对象,请启用本机代码调试。

1 个答案:

答案 0 :(得分:1)

通过在调试时将鼠标悬停在变量上可以重现:

Reproduction of the error

此错误的原因是这样的事实,即返回的实例不是经典的.NET类型,而是本机WinRT列表到.NET的投影。此Visual Studio的证明仅显示System.__ComObject而不是类型。但是,此类型充当IReadOnlyList<StorageFile>,因此即使它是本机类型,您也可以将其用作列表。

如果希望能够看到调试器中的内容,则需要将其手动转换为纯.NET类型,例如使用ToArray LINQ扩展方法:

var files = 
    (await ApplicationData.Current.LocalFolder.GetFilesAsync())
    .ToArray();

这将使files成为常规的.NET数组,调试器可以对其进行完全检查。

Debugger now displays data