winforms 我如何在发布之前和之后打开项目文件夹中的PDF文件?

mepcadol  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(142)

我做了一个简单的WinForms应用程序,我想在其中包含一个按钮,可以使用Windows中打开PDF的默认软件打开PDF文档。我想这工作运行的应用程序通过Visual Studio(有或没有调试器)以及发布后。
我将非常感激的帮助,因为我一直在这个问题上卡住了一段时间。
我不确定这是否是最好的方法,但我在项目文件夹中创建了一个名为“Resources”的文件夹,并将PDF文档包含在其中。
根据我读到的一些东西,我尝试了以下方法,但没有成功:

var pdfDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"Resources\MyPdfDocument.pdf";
System.Diagnostics.Process.Start(pdfDirectory);

另外:

Process proc = new Process();
proc.StartInfo = new ProcessStartInfo()
{
    FileName = pdfDirectory
};
proc.Start();

另外,我也尝试了Directory.GetCurrentDirectory(),而不是Assembly.GetExecutingAssembly().Location,但也没有成功。
在解决方案资源管理器中,我还选择了pdf文件,并设置了这些属性[Build Action > Content]和[Copy to Output Directory > Copy Always]。
我的大多数尝试都导致了一个错误窗口,说“试图启动进程'C:\Users...\MyProject\Resources\MyPdfDocument.pdf'与工作目录'C:\Users...\MyProject\bin\Release\net6.0-windows'发生错误指定的可执行文件不是此操作系统平台的有效应用程序。

tuwxkamq

tuwxkamq1#

jimi大喊大叫,因为他几乎立即在评论中提供了答案,省了我一个头痛的问题。
使用以下方法似乎有效:

Process proc = new Process();
proc.StartInfo = new ProcessStartInfo()
{
    FileName = pdfDirectory,
    UseShellExecute = true
};
proc.Start();

我以前的尝试失败了,因为我不知道UseShellExecute属性必须设置为true。根据您使用的.NET版本,默认情况下可能已经是这样了。

相关问题