关于C#:无法在Metro应用中启动默认应用

Cannot launch default application in a Metro app

好,因此Windows 8附带了一个很酷的PDF和XLS阅读器应用程序,称为Reader。当用户单击应用程序内的"帮助"按钮时,我要显示一个帮助文档。我的应用程序应使用该文档类型的默认查看器启动PDF文档。

但是不会。没有错误,没有异常,设置断点不会显示任何信息。我的代码是:

1
<Button x:Name="help" Style="{StaticResource HelpAppBarButtonStyle}" Tag="Help" Click="help_Click_1" />

和:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    private async void help_Click_1(object sender, RoutedEventArgs e)
    {

        try
        {
            Windows.Storage.StorageFile file =
                await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"\\Assets\\User Guide.pdf");
            await Windows.System.Launcher.LaunchFileAsync(file);
        }
        catch (Exception exception)
        {
            Debug.WriteLine(exception.Message);
        }
    }

现在,在解决方案资源管理器内部,有一些常用的文件和文件夹。我在根目录中也有一个Assets文件夹,而PDF文档位于此根文件夹中。

我不确定为什么它不起作用,但是我相信这可能与我在上面的代码中指向文件的方式有关:

await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"\\Assets\\User Guide.pdf");

如何使用该文档类型的默认应用程序正确显示Assets文件夹中包含的文档?


我测试了您的代码,在使其正常工作之前,我必须修复两个问题:

  • 确保pdf文件的Build Action设置为Content。在我的情况下,当我将文件包含在项目中时将其设置为None
  • 您需要删除文件路径Package.Current.InstalledLocation.GetFileAsync(@"Assets\\User Guide.pdf")中的起始反斜杠。
  • 更改以上两个选项后,将在默认的PDF查看器中打开文件。但即使在此之前,也出现了一个异常来描述发生了什么问题,尽管由于您的静音try / catch代码,起初我没有注意到它。

    如果它仍然不适合您,则可能与您的计算机配置有关。确保正确设置了pdf文件的默认查看器。