我正在尝试查看“资产”文件夹中的文件。我可以查看是否存在一个文件,因为它不允许我再次添加它。但是,我想查看调试器中的所有文件,但出现以下错误:
“要检查本机对象,请启用本机代码调试。”
这是我要调试/检查的代码。
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();
调试器错误:要检查本机对象,请启用本机代码调试。
答案 0 :(得分:1)
通过在调试时将鼠标悬停在变量上可以重现:
此错误的原因是这样的事实,即返回的实例不是经典的.NET类型,而是本机WinRT列表到.NET的投影。此Visual Studio的证明仅显示System.__ComObject
而不是类型。但是,此类型充当IReadOnlyList<StorageFile>
,因此即使它是本机类型,您也可以将其用作列表。
如果希望能够看到调试器中的内容,则需要将其手动转换为纯.NET类型,例如使用ToArray
LINQ扩展方法:
var files =
(await ApplicationData.Current.LocalFolder.GetFilesAsync())
.ToArray();
这将使files
成为常规的.NET数组,调试器可以对其进行完全检查。