发布Windows窗体应用程序-图像到哪里去
本文关键字:图像 Windows 窗体 应用程序 发布 | 更新日期: 2023-09-27 18:15:21
关于Windows窗体的一个真正的R101问题。
我已经创建了我的第一个Windows应用程序来打印发票。我有一个图像这是公司的标志(png)。这个应用程序在VS2010调试时工作得很好-我把图像放在bin文件夹中。现在我已经发布了它并在另一台机器上安装了它,我得到了这个异常错误:
先。FileNotFoundException: ice-logo-bw.png
问题是我在哪里放置图像,以便在发布时包含它?我试过把它放在根文件夹没有运气。
您应该将图像包含在项目中-可能与其他图像一起放在自己的文件夹中。
你应该在这个图像上设置构建操作-右键单击,选择属性并选择"如果更新则复制"或"始终复制"。
另一种方法是将其作为资源添加,但这意味着您还需要从资源而不是文件系统中获取它。
正如其他人已经说过的,你需要确保当你在另一台机器上部署/安装你的应用程序时,你的图像文件也被复制了——最合适的地方可能是你的项目的输出目录(bin/
目录,编译后的.exe
所在的目录)——你可以设置文件的"Copy to output directory "属性为"Copy if newer",让Visual Studio自动为你做这个。
:: Make sure that the current working directory is different from the one app.exe is in
C:'> path'to'my'program'app.exe
如果你的代码看起来像这样:
var image = LoadImage("myfile.png");
那么这可能会失败,因为您的程序正在寻找c:'myfile.png
而不是C:'path'to'my'program'app.exe
的图像。您应该将代码修改为如下所示:
另一种选择是使用嵌入式资源。这稍微复杂一些,但有一个好处,你的图像嵌入到输出。exe本身-不需要额外的文件,所以它减少了无法找到所需文件的机会,因为它们已被删除/移动/在安装过程中没有复制。
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myfile.png");
var image = LoadImage(path);
不是place case(你放文件的地方)而是Build Action
&Copy to OutputDirectory
属性-可以在属性窗口(Visual Studio)中访问。添加文件(图像)到项目后设置以下属性:
Build Action = None (depend on your application)
Copy to Output Directory = Copy always
文档参考在此