c# - ApplicationData.Current.TemporaryFolder.CreateFileAsync() 从桌面应用程序失败

标签 c# wpf windows-runtime

我正在创建一个访问 Windows 10 运行时 API 的 WPF 桌面应用程序。

如果我使用 ApplicationData.Current.TemporaryFolder.CreateFileAsync() API,则会失败并显示 InvalidOperationException

HResult=-2147009196
Message=The process has no package identity. (Exception from HRESULT: 0x80073D54)

是否可以从 WPF 桌面应用程序使用此 API?我可以为其添加包标识吗?我还能如何在 Windows 桌面应用程序中创建 StorageFile?

最佳答案

桌面应用程序没有包标识。您可以使用Desktop App Converter (DAC) 为您的桌面应用程序生成包。使用 DAC 将 WPF exe 打包为 appx 并安装该 appx 后,应用程序将按预期运行。

不过,

DAC 需要专业版或企业版。

但是您可以直接从桌面应用程序使用StorageFolder/StorageFile,而无需事先将应用程序转换为包。您遇到的错误是因为 ApplicationData.Current 映射到桌面应用程序不存在的文件夹。

这段代码使用 WinRT API 创建临时文件夹中的文件并将其写入其中。

var folder = await StorageFolder.GetFolderFromPathAsync(System.IO.Path.GetTempPath());
var file = await folder.CreateFileAsync("helloworld.txt");            
await FileIO.WriteTextAsync(file, "hahahaha");

关于c# - ApplicationData.Current.TemporaryFolder.CreateFileAsync() 从桌面应用程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082784/

相关文章:

c# - 是否可以防止 Windows 10 uwp 中的锁屏?

c++ - WP8 : how to get back an IntPtr in c++

c# - 如何使用 Midi 点网类在 C# 中读取打击乐音符值

c# - 哪种设计模式适合您? ASP.NET 与 MySQL

保存多个图像后 C# GDI+ 一般错误/外部异常

.net - 针对 WPF 应用程序的攻击

c# - 没有 Package.Config 的 Nuget 包?

wpf - Prism 和循环依赖

wpf - 如何使gridview成为wpf应用程序中treeview的子元素

xaml - 如何创建可变大小的组面板以适合 Windows 8 XAML 中的项目