如果 SecondaryTile Imagesources 不是来自 Assets 文件夹,C# UWP 应用会崩溃

C# UWP app crashes if SecondaryTile Imagesources are not from Assets folder

基本上我正在尝试制作一个 UWP 应用程序以在“开始”菜单上创建自定义磁贴。 当 Tile Images 来自 Assets 文件夹时,SecondaryTile 正在工作。

Uri square150x150Logo = new Uri("ms-appx:///Assets/square150x150Tile-sdk.png");
Uri wide310x150Logo = new Uri("ms-appx:///Assets/wide310x150Tile-sdk.png");
Uri square310x310Logo = new Uri("ms-appx:///Assets/square310x310Tile-sdk.png");
Uri square30x30Logo = new Uri("ms-appx:///Assets/square30x30Tile-sdk.png");

但我在 ApplicationData 文件夹中有图像并尝试使用这样的路径:

Uri square150x150Logo = new Uri(Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "ImageSquare.png"));
Uri wide310x150Logo = new Uri(Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "ImageWide.png"));
Uri square310x310Logo = new Uri(Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "ImageLarge.png"));
Uri square30x30Logo = new Uri(Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "ImageTiny.png"));

但是这样应用程序就崩溃了。调试器也不工作。有什么解决办法吗?

要引用应用程序数据文件,您应该使用 ms-appdata:///

调用 TemporaryFolder.Path 将 return 绝对文件路径 C:\,不允许在辅助图块上使用。

因此您更新后的代码将是...

Uri square150x150Logo = new Uri("ms-appdata:///temp/ImageSquare.png"));

好的,终于想通了。 除了安德鲁的回答,我还不得不改为使用 LocalState 文件夹而不是 TempState。 Andrew 指示在正确的方法中使用ms-appdata,但由于某种原因ms-appdata:///temp/ 返回了错误。但使用 ms-appdata:///Local/ 解决了问题。