【问题标题】:Image not found after ClickOnce publishClickOnce 发布后找不到图像
【发布时间】:2018-05-29 14:48:58
【问题描述】:

我正在使用 MigraDoc 创建一个 PDF 文档。该图像位于项目的根文件夹中,因此我使用此代码将其插入到 PDF 文档中:

Image img = tfLogoDate.AddImage("../../db_logo_500p.png");

构建操作设置为“内容”:

这在开发过程中可以正常工作,使用 Visual Studio 调试版本。但是当我使用 ClickOnce(发布)创建构建时,它说找不到图像。

我是否使用了错误的构建操作?还是因为在我使用 ClickOnce 发布应用程序时,相对路径发生了变化?

【问题讨论】:

  • 在图片中,“复制到输出目录”设置为“不复制”。
  • @BarryO'Kane 是的,但我不确定这实际上意味着什么。因为当我查看它的安装文件夹时,图形文件在那里(仍在根目录中)。
  • 构建项目时,此设置决定文件是否复制到 bin 文件夹。检查它,该文件应该丢失了。
  • @BarryO'Kane 我尝试将Copy to Output Directory 设置更改为“始终复制”,但没有效果...

标签: c# visual-studio clickonce migradoc


【解决方案1】:

我找到了一种通过更改图像位置来使其工作的方法。我现在改用这个:

// I have added the 'pack://(...)' in front of the path
Image img = tfLogoDate.AddImage("pack://application:,,,/../../db_logo_500p.png");

我必须对 PNG 文件使用以下设置:

  • 构建操作:内容
  • 复制到输出目录:不要复制

如果有人确切地知道上述工作的原因,我会很高兴知道。但最重要的是,它有效...

【讨论】:

  • 图像被编译到你的程序集中。最初您使用的是项目文件夹中的图像 - 当然,这仅在部署之前从项目文件夹启动应用程序时才有效。
  • 所以基本上,你是说pack://application:,,,/ 引用,种类的变化,取决于构建/发布方法?
  • 您引用了作为资源嵌入到程序集中的图像文件。很好,如果它适合你。适用于静态图像 - 使用户更难以替换图像。如果用户应该能够自定义徽标,那就不好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
相关资源
最近更新 更多