如何从已发布的WinForm应用程序中的\ bin \ x64 \ Release加载pdf文件?

时间:2017-05-09 19:37:24

标签: c# winforms visual-studio file pdf

我在做什么?我想在Windows窗体应用程序中添加帮助文件。我将pdf添加到项目中的文件夹中,并将属性复制到输出目录设置为始终复制。这会导致文件被复制到bin中的Debug和Release目录。当我运行应用程序时,这在调试模式下完美运行。

问题是什么?这不适用于生产版本。我只针对x64操作系统。 pdf正在复制到 bin / x64 / Release ,但在加载时会崩溃。

这是我加载pdf的方式

string filePath = @"HelpFiles\File.pdf";
Process.Start(Path.Combine(Application.StartupPath, filePath));

有关如何让程序在生产版本上加载文件的任何想法吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试打开项目的属性,在 发布 标签下,打开 应用程序文件... < / strong>并包含您的&#34; HelpFiles \ File.pdf &#34;

与此类似?enter image description here

然后尝试发布它。

编辑:ClickOnce正在安装的所有文件/程序都应包含在的pdf文件的应用程序文件... 和构建操作属性中内容

答案 1 :(得分:0)

假设您有一个固定的pdf文件,您只需将该文件作为ressource添加到项目中即可。 然后,您将可以String tmpPdfFilePath = Path.Combine(Path.GetTempPath(), String.Format("{0}.pdf", Path.GetTempFileName())); File.WriteAllBytes(tmpPdfFilePath, Properties.Default.PdfFile); Process.Start(tmpPdfFilePath); 访问该文件。使用

temp

只有缺点,您每次都将文件复制到Path.GetTempFile()目录。您可以使用静态文件名而不是Properties.Resources.FileName 来解决这个问题。检查文件是否存在,并根据需要将其复制到temp。

更新

如果在默认的ressource文件中将文件作为ressource添加到项目中,则可以使用

获取文件的字节
Offer