在 OpenFileDialog 中与 clickonce 文件关联后不显示图标

Icon not shown after file association with clickonce in OpenFileDialog

我正在尝试在使用 clickonce 安装的应用程序和具有给定扩展名的文件之间建立文件关联。我正在使用项目属性中的 Publish Options - File Associations 来关联文件,如下所示:

这有效,我可以看到文件在安装应用程序后关联,添加的图标在具有给定扩展名的文件上可见。

现在我尝试在应用程序中使用“打开”选项打开文件,因此我对 OpenFileDialog 对象上的 ShowDialog() 方法进行了简单调用,如下所示:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "test files|*.test1";
openFileDialog1.Title = "Select a test file";

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{

}

对话框显示正确,我可以看到文件,但唯一的问题是文件图标显示为空白,因为它们从未关联过。

请注意,在上图中,文件显示为空白图标。如果我用 Windows Explorer 查看文件,它有一个图像,所以我真的不知道发生了什么或者我该如何解决它。

注意: 我刚刚意识到,如果我使用画图中的 Open 选项查看同一个文件,文件图标会正确显示,但是使用 Microsoft Excel 相同的打开行为与我的应用程序相同,不显示文件图标,所以我开始怀疑这是否是一个错误。任何建议表示赞赏!

正如 Hans Passant 指出的那样,运行 和 OpenFileDialog 进程的位架构与建立文件关联的架构之间存在不匹配。

使用 clickonce 发布应用程序时,Build 属性 下的 Prefer 32-bit 复选框被选中默认情况下,在 x64 机器上,clickonce 安装程序在 64 位注册表下进行文件关联,但应用程序在 32 位模式下仍然是 运行。由于这种不匹配,某些基于 32 位体系结构构建的应用程序无法在文件对话框中看到文件关联。

取消选中首选 32 位 已经解决了我的问题,因为 clickonce 安装程序和应用程序现在 运行 在同一架构上。