我的WPF应用程序中有一个trayicon。当我在Visual Studio中进行调试时,它运行良好:
System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
ni.Icon = new Icon("../../logo,ico");
但在我发布之后,该应用程序抛出一个例外,说它可以找到trayicon图像的路径。我在网上搜索了很多资源,我看到很多解决方案都使用pack,但似乎pack只接受Uri变量,而trayicon的路径必须是字符串。我还尝试在项目解决方案下创建一个名为Resource的文件夹,并将图像文件放入其中。这是相同的:在调试时工作,但在发布后不起作用..
基于@WPF德国的建议,我在Clickonce发布App后解决了路径问题。但是,如果我将App快捷方式复制到系统启动文件夹,它会在C:\ WINDOWS \ system32中找到ico,这很容易解决,因为systems32通常需要管理员权限才能访问。有什么想法?
答案 0 :(得分:1)
您是否检查过您的logo.ico文件是否已复制到输出路径?
在VS中,您有多个选项可以提供资源文件。
第一个选项:
在解决方案资源管理器中选择您的logo.ico文件,然后在None
选择Build Action
作为Copy always
和Copy to Output Directory
(在文件属性中)。
编译完成后,您会在OutputPath
的子目录中找到该文件。
使用(如果logo.ico放在您的项目根目录中):
ni.Icon = new Icon("logo.ico");
其他选项:
使用Resource
作为Build Action
并使用Stream
创建的Resources.logo
构建您的图标...