我正在创建一个访问 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/