【发布时间】:2019-03-26 03:39:25
【问题描述】:
我有一个有趣的问题,很难调试,因为它发生在我使用文件激活启动此应用程序时。
如果我直接启动应用程序,没问题。如果我双击关联的文件,它会挂在启动屏幕上,甚至不会超过这个(在InitializeComponent 设置调试断点,它甚至都没有到达那里)。
所以我所做的是:在清单的声明选项卡中,我向我创建的文件类型添加了一个文件类型关联,并确保选中了“打开是安全的”。然后,使用OnNavigatedTo override 来捕获用于激活的文件的文件名。我得到启动画面,然后什么也没有。
如果我只是启动应用程序并从内部打开文件,一切正常。让我感到震惊的是,我在另一个应用程序中使用了确切的 OnNavigatedTo,而且它运行良好。
这是我的 OnNavigatedTo:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var args = e.Parameter as Windows.ApplicationModel.Activation.IActivatedEventArgs;
if (args != null)
{
if (args.Kind == Windows.ApplicationModel.Activation.ActivationKind.File)
{
var fileArgs = args as Windows.ApplicationModel.Activation.FileActivatedEventArgs;
string strFilePath = fileArgs.Files[0].Path;
var file = (StorageFile)fileArgs.Files[0];
//MainPlayList is a custom object used to manipulate the playlist of stuff I'm building.
MainPlayList = new Playlist();
MainPlayList.InitializePlayList();
await MainPlayList.AddImageToPlaylist(file);
}
}
}
我已经检查了工作应用程序和这个应用程序的包清单。除了名称之外,它们是相同的。大约 18 个月前有人提到,这可能与最低使用的 Windows 版本有关。也试过了,没有结果。
【问题讨论】:
-
初始化组件为类运行 Load 方法。例如,一个 windows 窗体类将运行 Designer.cs 文件中的代码。
-
在您的文件激活中写入 System.Diagnostics.Debugger.Launch() 如果并调试您的应用程序。
-
这只是一个断点,我用来开始跟踪应用程序的去向,如果有的话。当我启动它时,没问题它就停在那里。文件激活后,我什至无处可去。主窗口甚至没有被创建。
-
试试这个 if (args.Kind == Windows.ApplicationModel.Activation.ActivationKind.File) {System.Diagnostics.Debugger.Launch();...
-
@Access Denied,试过这个。 “此平台不支持操作”....相反,我使用 VS2017 Debug/Other Debug Targets/Debug Universal Window App Pre-Launch,然后进行文件激活。
标签: c# file uwp activation