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

时间:2017-02-07 14:48:08

标签: c# icons clickonce openfiledialog

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

Publish Options

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

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

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

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

}

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

File shown in dialog box

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

File in Windows Explorer

注意:我刚才意识到如果我使用Paint中的 Open 选项查看同一个文件,文件图标会正确显示,但同样打开Microsoft Excel会表现出来和我的应用程序一样,没有显示文件图标,所以我开始怀疑这是不是一个bug。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

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

当使用clickonce发布应用程序时, Build 属性下的首选32位复选框保持默认选中状态,因此在x64计算机上,clickonce安装程序正在进行64位注册表下的文件关联,但应用程序仍在32位模式下运行。由于这种不匹配,一些构建在32位体系结构上的应用程序无法在文件对话框中看到文件关联。

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